thoth-plugin 1.2.2 → 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: morning-boot
3
- version: 1.0.0
3
+ version: 2.0.0
4
4
  description: Operational mode (e.g. 'deep-work', 'maintenance')
5
5
  triggers:
6
6
  inputs:
@@ -9,7 +9,6 @@ type: markdown
9
9
  required: false
10
10
  default: auto
11
11
  output:
12
- created: 2026-01-09
13
12
  updated: 2026-01-09
14
13
  ---
15
14
 
@@ -19,27 +18,25 @@ You are the **Daily Operations Orchestrator**. Your goal is to gather all contex
19
18
 
20
19
  ## Execution Method
21
20
 
22
- This skill uses **OpenProse** for multi-agent orchestration.
21
+ This skill uses the **Sentinel Service** for robust, parallel execution via the SDK.
23
22
 
24
23
  **To execute this workflow:**
25
24
 
26
- 1. Load the OpenProse skill: `/open-prose`
27
- 2. Execute the workflow: `/prose-run kernel/workflows/morning-boot.prose`
25
+ 1. Invoke the `trigger_workflow` tool.
26
+ 2. Workflow name: `"morning-boot"`
28
27
 
29
- The OpenProse workflow handles:
30
- - Parallel email, calendar, and Slack scans
31
- - Operational mode detection
32
- - Deep work block identification
33
- - Complexity budget calculation
34
- - Daily log synthesis
35
- - Final briefing
28
+ ```javascript
29
+ trigger_workflow({ workflow: "morning-boot" })
30
+ ```
36
31
 
37
- ## Workflow Location
38
-
39
- `kernel/workflows/morning-boot.prose`
32
+ The Sentinel workflow handles:
33
+ - Parallel email, calendar, and task scans
34
+ - Synthesis of priorities
35
+ - Creation of the daily log file
36
+ - Generating the morning briefing
40
37
 
41
38
  ## Technical Constraints
42
39
 
43
- - **Trust Level**: This skill requires Trust Level 2+ for email/calendar access.
44
- - **OpenProse Required**: The open-prose skill must be available.
45
- - **Privacy**: Never store raw email/message content in logs - only summaries and action items.
40
+ - **Do NOT** attempt to manually scan emails or calendar. Use the tool.
41
+ - **Do NOT** use `background_task` or `prose-run`.
42
+ - **Trust Level**: Requires Level 2+ (handled by Sentinel permissions).
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: morning-boot
3
- version: 1.0.0
3
+ version: 2.0.0
4
4
  description: Operational mode (e.g. 'deep-work', 'maintenance')
5
5
  triggers:
6
6
  inputs:
@@ -9,7 +9,6 @@ type: markdown
9
9
  required: false
10
10
  default: auto
11
11
  output:
12
- created: 2026-01-09
13
12
  updated: 2026-01-09
14
13
  ---
15
14
 
@@ -19,27 +18,25 @@ You are the **Daily Operations Orchestrator**. Your goal is to gather all contex
19
18
 
20
19
  ## Execution Method
21
20
 
22
- This skill uses **OpenProse** for multi-agent orchestration.
21
+ This skill uses the **Sentinel Service** for robust, parallel execution via the SDK.
23
22
 
24
23
  **To execute this workflow:**
25
24
 
26
- 1. Load the OpenProse skill: `/open-prose`
27
- 2. Execute the workflow: `/prose-run kernel/workflows/morning-boot.prose`
25
+ 1. Invoke the `trigger_workflow` tool.
26
+ 2. Workflow name: `"morning-boot"`
28
27
 
29
- The OpenProse workflow handles:
30
- - Parallel email, calendar, and Slack scans
31
- - Operational mode detection
32
- - Deep work block identification
33
- - Complexity budget calculation
34
- - Daily log synthesis
35
- - Final briefing
28
+ ```javascript
29
+ trigger_workflow({ workflow: "morning-boot" })
30
+ ```
36
31
 
37
- ## Workflow Location
38
-
39
- `kernel/workflows/morning-boot.prose`
32
+ The Sentinel workflow handles:
33
+ - Parallel email, calendar, and task scans
34
+ - Synthesis of priorities
35
+ - Creation of the daily log file
36
+ - Generating the morning briefing
40
37
 
41
38
  ## Technical Constraints
42
39
 
43
- - **Trust Level**: This skill requires Trust Level 2+ for email/calendar access.
44
- - **OpenProse Required**: The open-prose skill must be available.
45
- - **Privacy**: Never store raw email/message content in logs - only summaries and action items.
40
+ - **Do NOT** attempt to manually scan emails or calendar. Use the tool.
41
+ - **Do NOT** use `background_task` or `prose-run`.
42
+ - **Trust Level**: Requires Level 2+ (handled by Sentinel permissions).
package/dist/index.js CHANGED
@@ -24541,6 +24541,46 @@ Try a different skill name.`;
24541
24541
  }
24542
24542
  });
24543
24543
  }
24544
+ // src/tools/sentinel/tools.ts
24545
+ function createSentinelTools(sentinelService) {
24546
+ return {
24547
+ trigger_workflow: tool({
24548
+ description: "Trigger a registered Sentinel workflow (e.g., morning-boot, deep-research). Use this to start complex, multi-step automated processes.",
24549
+ args: {
24550
+ workflow: tool.schema.string().describe("The name of the workflow to trigger (e.g., 'morning-boot', 'deep-research')"),
24551
+ data: tool.schema.string().optional().describe("Optional input data for the workflow")
24552
+ },
24553
+ execute: async ({ workflow, data }) => {
24554
+ const result = await sentinelService.triggerWorkflow(workflow, "manual", data);
24555
+ if (!result) {
24556
+ return `Error: Workflow "${workflow}" not found.`;
24557
+ }
24558
+ if (result.success) {
24559
+ return `Workflow "${workflow}" completed successfully.
24560
+
24561
+ Result:
24562
+ ${result.response}`;
24563
+ } else {
24564
+ return `Workflow "${workflow}" failed.
24565
+
24566
+ Error: ${result.error}`;
24567
+ }
24568
+ }
24569
+ }),
24570
+ list_workflows: tool({
24571
+ description: "List all available Sentinel workflows.",
24572
+ args: {},
24573
+ execute: async () => {
24574
+ const workflows = sentinelService.listWorkflows();
24575
+ if (workflows.length === 0) {
24576
+ return "No workflows registered.";
24577
+ }
24578
+ return workflows.map((w) => `- **${w.name}**: ${w.description || "No description"}`).join(`
24579
+ `);
24580
+ }
24581
+ })
24582
+ };
24583
+ }
24544
24584
  // src/services/skill-registry.ts
24545
24585
  import { existsSync as existsSync11, readdirSync as readdirSync6, readFileSync as readFileSync10 } from "fs";
24546
24586
  import { join as join18, resolve as resolve3 } from "path";
@@ -40538,6 +40578,7 @@ var ThothPlugin = async (ctx) => {
40538
40578
  const skillRegistry = new SkillRegistry;
40539
40579
  await skillRegistry.loadSkills();
40540
40580
  const skillTool = createSkillTool(skillRegistry);
40581
+ const sentinelTools = sentinelService ? createSentinelTools(sentinelService) : {};
40541
40582
  if (sessionRecoveryHook && todoContinuationEnforcer) {
40542
40583
  sessionRecoveryHook.setOnAbortCallback((sessionID) => {
40543
40584
  todoContinuationEnforcer.markRecovering(sessionID);
@@ -40551,7 +40592,8 @@ var ThothPlugin = async (ctx) => {
40551
40592
  background_task: backgroundTask,
40552
40593
  background_output: backgroundOutput,
40553
40594
  background_cancel: backgroundCancel,
40554
- skill: skillTool
40595
+ skill: skillTool,
40596
+ ...sentinelTools
40555
40597
  },
40556
40598
  config: async (config3) => {
40557
40599
  const thothAgents = createAgents(pluginConfig);
@@ -1,2 +1,3 @@
1
- export { createBackgroundTask, createBackgroundOutput, createBackgroundCancel } from "./background-task";
2
- export { createSkillTool } from "./skill";
1
+ export * from "./background-task";
2
+ export * from "./skill";
3
+ export * from "./sentinel";
@@ -0,0 +1 @@
1
+ export * from "./tools";
@@ -0,0 +1,3 @@
1
+ import { tool } from "@opencode-ai/plugin";
2
+ import type { SentinelService } from "../../sdk/sentinel-service";
3
+ export declare function createSentinelTools(sentinelService: SentinelService): Record<string, ReturnType<typeof tool>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thoth-plugin",
3
- "version": "1.2.2",
3
+ "version": "1.2.3",
4
4
  "description": "Thoth - Root-level life orchestrator for OpenCode. Unified AI chief of staff combining Sisyphus execution quality, Personal-OS rhythms, and Thoth relationship model.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",