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.interface ProcessInfo {
command: string; // The name of the process (i.e. Olive Helps, Google Chrome, etc.
pid: number; // The process id number
}
enum ProcessAction {
Started = 1,
Unknown = 0,
Stopped = 2,
}
interface ProcessEvent {
processInfo: ProcessInfo;
processAction: ProcessAction;
}
Gets a list of the current running processes on a user's system.
import { process } from '@oliveai/ldk';
process.all().then((processInfoArray) => {
// Logs a process name like "Olive Helps", "Google Chrome", "pbpaste" etc.
console.log(processInfoArray[0].command);
});
Listens to all processes starting and stopping on a user's system. Triggers the callback whenever a process is started or stopped.
import { process } from '@oliveai/ldk';
process.listenAll((processEvent) => {
console.log(processEvent.processInfo.command);
if (process.processAction === process.ProcessAction.Started) {
// New process started
}
});
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()
;import { process } from '@oliveai/ldk';
import { Cancellable } from '@oliveai/ldk/dist/cancellable';
const listenForApplicationStart = () => {
let cancellableStream: Cancellable;
process.listenAll((response) => {
const {processInfo, processAction} = response;
if (
processInfo.command.includes('Evernote') &&
processAction === process.ProcessAction.Started
) {
// Logic to respond to the program starting...
// Cancel the listening stream if needed.
cancellableStream.cancel();
}
})
.then((cancellable: Cancellable) => {
// Set the value of the stream so that we can close it if needed
cancellableStream = cancellable;
});
};
To use the Process Aptitude, simply set the following permissions in your
package.json
under the ldk
object.
...
"ldk": {
"permissions": {
"process": {},
...
}
},
...
Last modified 1yr ago