LogoLogo
Developer HubGitHubContact Us
  • Welcome!
  • Olive Helps
    • Platform
      • How Olive Helps Works
      • Installation
      • Account Creation
      • Distributing Olive Helps
    • FAQs
      • General Loop FAQs
      • Loop Development FAQs
      • Olive Helps User FAQs
      • Security / IT FAQs
    • Data Security
      • User Data
      • Antivirus and Firewalls
  • Loop Development Kit
    • Your First Loop
      • Become a Loop Author
      • Creating a Loop
      • Build Your Loop
      • Local Loop Installation
      • Restarting Local Loops
    • Troubleshooting
    • Loop Security
      • Permissions
      • Environment Permissions
    • Loop Publication
      • Loop Approval Checklist
    • Loop Analytics Library
    • Examples
  • Documentation
  • Interfaces
  • Type Alias
  • Enumerations
  • Whisper Components
    • Base Attributes
    • Autocomplete
    • Box
    • Breadcrumb
    • Button
    • Chart
    • CollapseBox
    • Grid
    • Checkbox
    • Date Time
    • Divider
    • DropZone
    • Email
    • Icon
    • List Pair
    • Link
    • Pagination
    • Number
    • Markdown
    • Message
    • Password
    • Progress
    • Radio
    • Rating
    • RichTextEditor
    • Section Title
    • Select
    • Text Input
    • Telephone
    • Typography
  • APTITUDES
    • What are Aptitudes?
    • Browser
    • Clipboard
    • Config
    • Cursor
      • Screen Scaling Behavior
    • Document
    • Filesystem
    • Keyboard
    • Network
    • Process
    • Screen
    • Search
      • Index
    • System
    • UI
      • Loop UI Handlers
    • User
      • JWT
    • Vault
    • Whisper
      • Whisper Updates
      • JSX Whispers
    • Window
      • Screen Scaling Behavior
  • Release Notes
    • What's New
      • Olive Helps v0.55.0
      • Olive Helps v0.54.1
      • Olive Helps v0.53.1
      • Olive Helps v0.51.2
      • LDK v4.0.0
      • Olive Helps v0.50.3
      • Olive Helps v0.49.5
      • LDK v 3.18.0
      • Olive Helps v0.47.2
      • Olive Helps v0.46.2
      • LDK v 3.17.0
      • Olive Helps v0.45.4
      • Olive Helps v0.44.2
      • Olive Helps v0.43.1
      • Olive Helps v0.42.1
      • Olive Helps v0.41.4
      • Olive Helps v0.40.2
      • Olive Helps v0.39.4 & LDK v3.16.0
      • Olive Helps v0.38.8 & LDK v3.15.0
      • Olive Helps v0.36.5
      • Olive Helps v0.36.4
    • Archive
      • Olive Helps v0.36.3 & LDK v3.14.0
      • Olive Helps v0.34.4
      • LDK v3.13.0
      • Olive Helps v0.32.2 & LDK v3.12.0
      • Olive Helps v0.31.2 & LDK v3.11.0
      • Olive Helps v0.30.2 & LDK v3.10.0
      • Olive Helps v0.29.4
      • Olive Helps v0.29.3 & LDK v3.9.0
      • Olive Helps v0.28.3 & LDK v3.8.0
      • Olive Helps v0.27.7
      • Olive Helps v0.27.5
      • Olive Helps v.027.4
      • Olive Helps v0.27.2 & LDK v3.7.0
      • Olive Helps v0.25.3 & LDK v3.5.1
      • Olive Helps v0.24.6 & LDK v3.4.0
      • Olive Helps v0.23.2 & LDK v3.3.0
      • Olive Helps v0.22.3 & LDK v3.2.0
Powered by GitBook
On this page

Was this helpful?

  1. APTITUDES

Process

The Process Aptitude provides the ability to examine attributes about processes running on the user's computer.

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;
}

all

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);
});

listenAll

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": {},
    ...
  }
},
...

PreviousNetworkNextScreen

Last updated 3 years ago

Was this helpful?

Please see our page for more information.

Permissions