Process
The Process Aptitude provides the ability to examine attributes about processes running on the user's computer.
API
Example
Permissions
Each call to the Process Aptitude is providing you with one of two types of information. It either returns ProcessInfo or a ProcessEvent . Let's take a moment to define what these two things are.
1
interface ProcessInfo {
2
command: string; // The name of the process (i.e. Olive Helps, Google Chrome, etc.
3
pid: number; // The process id number
4
}
5
6
enum ProcessAction {
7
Started = 1,
8
Unknown = 0,
9
Stopped = 2,
10
}
11
12
interface ProcessEvent {
13
processInfo: ProcessInfo;
14
processAction: ProcessAction;
15
}
Copied!

all

Gets a list of the current running processes on a user's system.
1
import { process } from '@oliveai/ldk';
2
3
process.all().then((processInfoArray) => {
4
// Logs a process name like "Olive Helps", "Google Chrome", "pbpaste" etc.
5
console.log(processInfoArray[0].command);
6
});
Copied!

listenAll

Listens to all processes starting and stopping on a user's system. Triggers the callback whenever a process is started or stopped.
1
import { process } from '@oliveai/ldk';
2
3
process.listenAll((processEvent) => {
4
console.log(processEvent.processInfo.command);
5
if (process.processAction === process.ProcessAction.Started) {
6
// New process started
7
}
8
});
Copied!
Let's say that you wanted to design a Loop that opens a helpful Whisper when the end user starts a certain application. We can accomplish this through using the Process Aptitude.
First, we need to know the name of the application. In this case, let's use the popular note taking software Evernote. Let's set up an example that executes some logic in our Loop when someone opens the Evernote application.
In this example we will also close the listening stream set by listenAll after the event we are looking for has occurred. A reference to that stream is returned in the promise after calling listenAll, and when you are ready to end the stream, call streamVar.cancel();
1
import { process } from '@oliveai/ldk';
2
import { Cancellable } from '@oliveai/ldk/dist/cancellable';
3
4
const listenForApplicationStart = () => {
5
let cancellableStream: Cancellable;
6
7
process.listenAll((response) => {
8
const {processInfo, processAction} = response;
9
if (
10
processInfo.command.includes('Evernote') &&
11
processAction === process.ProcessAction.Started
12
) {
13
// Logic to respond to the program starting...
14
15
// Cancel the listening stream if needed.
16
cancellableStream.cancel();
17
}
18
})
19
.then((cancellable: Cancellable) => {
20
// Set the value of the stream so that we can close it if needed
21
cancellableStream = cancellable;
22
});
23
};
Copied!
To use the Process Aptitude, simply set the following permissions in your package.json under the ldk object.
Please see our Permissions page for more information.
1
...
2
"ldk": {
3
"permissions": {
4
"process": {},
5
...
6
}
7
},
8
...
Copied!
Copy link