thoth-plugin 1.2.0 → 1.2.2
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.
- package/README.md +16 -0
- package/defaults/AGENTS.md +53 -0
- package/{dist/defaults/skill → defaults/skill/_legacy}/gardener/SKILL.md +243 -17
- package/defaults/skill/_legacy/onboarding/SKILL.md +207 -0
- package/defaults/skill/evening-close/SKILL.md +97 -0
- package/defaults/skill/mail-triage/SKILL.md +26 -0
- package/defaults/skill/morning-boot/SKILL.md +45 -0
- package/defaults/skill/slack-pulse/SKILL.md +26 -0
- package/defaults/skill/thought-router/SKILL.md +89 -0
- package/dist/cli.d.ts +0 -8
- package/dist/cli.js +70 -436
- package/dist/config/index.d.ts +1 -1
- package/dist/config/schema.d.ts +17 -0
- package/dist/defaults/skill/_legacy/cal-grid/SKILL.md +16 -0
- package/dist/defaults/skill/_legacy/capsule-init/SKILL.md +102 -0
- package/dist/defaults/skill/_legacy/cross-linker/SKILL.md +357 -0
- package/dist/defaults/skill/_legacy/email-draft/skill.md +134 -0
- package/dist/defaults/skill/_legacy/gardener/SKILL.md +509 -0
- package/dist/defaults/skill/_legacy/gardener/confidence-tiers.md +142 -0
- package/dist/defaults/skill/_legacy/gardener/repair-workflow.md +170 -0
- package/dist/defaults/skill/_legacy/google-chat-scan/SKILL.md +135 -0
- package/dist/defaults/skill/_legacy/handover/SKILL.md +18 -0
- package/dist/defaults/skill/_legacy/interview-prep/SKILL.md +23 -0
- package/dist/defaults/skill/_legacy/leadership-coach/SKILL.md +167 -0
- package/dist/defaults/skill/_legacy/link-retrofit/SKILL.md +345 -0
- package/dist/defaults/skill/_legacy/onboarding/SKILL.md +207 -0
- package/dist/defaults/skill/_legacy/post-meeting-drill/SKILL.md +485 -0
- package/dist/defaults/skill/_legacy/restore-environment/SKILL.md +30 -0
- package/dist/defaults/skill/_legacy/scorecard-synthesis/SKILL.md +26 -0
- package/dist/defaults/skill/_legacy/skill-generator/SKILL.md +362 -0
- package/dist/defaults/skill/_legacy/skill-generator/testing-protocol.md +158 -0
- package/dist/defaults/skill/_legacy/system-init/SKILL.md +103 -0
- package/dist/defaults/skill/evening-close/SKILL.md +6 -7
- package/dist/defaults/skill/mail-triage/SKILL.md +11 -8
- package/dist/defaults/skill/morning-boot/SKILL.md +26 -87
- package/dist/defaults/skill/slack-pulse/SKILL.md +11 -7
- package/dist/defaults/skill/thought-router/SKILL.md +10 -8
- package/dist/index.js +11316 -2308
- package/dist/schemas/skill.d.ts +96 -0
- package/dist/sdk/index.d.ts +4 -0
- package/dist/sdk/sentinel-service.d.ts +71 -0
- package/dist/sdk/skill-runner.d.ts +21 -0
- package/dist/sdk/thoth-client.d.ts +51 -0
- package/dist/sdk/workflows/calendar-watcher.d.ts +2 -0
- package/dist/sdk/workflows/inbox-watcher.d.ts +2 -0
- package/dist/sdk/workflows/index.d.ts +4 -0
- package/dist/sdk/workflows/system-watcher.d.ts +2 -0
- package/dist/sdk/workflows/task-watcher.d.ts +2 -0
- package/dist/services/index.d.ts +1 -0
- package/dist/services/skill-registry.d.ts +23 -0
- package/dist/tools/skill/tools.d.ts +2 -1
- package/package.json +8 -3
- /package/{dist/defaults/skill → defaults/skill/_legacy}/cal-grid/SKILL.md +0 -0
- /package/{dist/defaults/skill → defaults/skill/_legacy}/capsule-init/SKILL.md +0 -0
- /package/{dist/defaults/skill → defaults/skill/_legacy}/cross-linker/SKILL.md +0 -0
- /package/{dist/defaults/skill → defaults/skill/_legacy}/email-draft/skill.md +0 -0
- /package/{dist/defaults/skill → defaults/skill/_legacy}/gardener/confidence-tiers.md +0 -0
- /package/{dist/defaults/skill → defaults/skill/_legacy}/gardener/repair-workflow.md +0 -0
- /package/{dist/defaults/skill → defaults/skill/_legacy}/google-chat-scan/SKILL.md +0 -0
- /package/{dist/defaults/skill → defaults/skill/_legacy}/handover/SKILL.md +0 -0
- /package/{dist/defaults/skill → defaults/skill/_legacy}/interview-prep/SKILL.md +0 -0
- /package/{dist/defaults/skill → defaults/skill/_legacy}/leadership-coach/SKILL.md +0 -0
- /package/{dist/defaults/skill → defaults/skill/_legacy}/link-retrofit/SKILL.md +0 -0
- /package/{dist/defaults/skill → defaults/skill/_legacy}/post-meeting-drill/SKILL.md +0 -0
- /package/{dist/defaults/skill → defaults/skill/_legacy}/restore-environment/SKILL.md +0 -0
- /package/{dist/defaults/skill → defaults/skill/_legacy}/scorecard-synthesis/SKILL.md +0 -0
- /package/{dist/defaults/skill → defaults/skill/_legacy}/skill-generator/SKILL.md +0 -0
- /package/{dist/defaults/skill → defaults/skill/_legacy}/skill-generator/testing-protocol.md +0 -0
- /package/{dist/defaults/skill → defaults/skill/_legacy}/system-init/SKILL.md +0 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
declare const SkillParameterSchema: z.ZodObject<{
|
|
3
|
+
name: z.ZodString;
|
|
4
|
+
type: z.ZodEnum<{
|
|
5
|
+
string: "string";
|
|
6
|
+
number: "number";
|
|
7
|
+
boolean: "boolean";
|
|
8
|
+
object: "object";
|
|
9
|
+
array: "array";
|
|
10
|
+
}>;
|
|
11
|
+
description: z.ZodString;
|
|
12
|
+
required: z.ZodDefault<z.ZodBoolean>;
|
|
13
|
+
default: z.ZodOptional<z.ZodAny>;
|
|
14
|
+
}, z.core.$strip>;
|
|
15
|
+
export declare const SkillFrontmatterSchema: z.ZodObject<{
|
|
16
|
+
name: z.ZodString;
|
|
17
|
+
description: z.ZodString;
|
|
18
|
+
version: z.ZodString;
|
|
19
|
+
author: z.ZodOptional<z.ZodString>;
|
|
20
|
+
triggers: z.ZodArray<z.ZodString>;
|
|
21
|
+
inputs: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
22
|
+
name: z.ZodString;
|
|
23
|
+
type: z.ZodEnum<{
|
|
24
|
+
string: "string";
|
|
25
|
+
number: "number";
|
|
26
|
+
boolean: "boolean";
|
|
27
|
+
object: "object";
|
|
28
|
+
array: "array";
|
|
29
|
+
}>;
|
|
30
|
+
description: z.ZodString;
|
|
31
|
+
required: z.ZodDefault<z.ZodBoolean>;
|
|
32
|
+
default: z.ZodOptional<z.ZodAny>;
|
|
33
|
+
}, z.core.$strip>>>;
|
|
34
|
+
output: z.ZodOptional<z.ZodObject<{
|
|
35
|
+
type: z.ZodEnum<{
|
|
36
|
+
text: "text";
|
|
37
|
+
json: "json";
|
|
38
|
+
markdown: "markdown";
|
|
39
|
+
code: "code";
|
|
40
|
+
}>;
|
|
41
|
+
schema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
42
|
+
}, z.core.$strip>>;
|
|
43
|
+
constraints: z.ZodOptional<z.ZodObject<{
|
|
44
|
+
models: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
45
|
+
tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
46
|
+
memory: z.ZodDefault<z.ZodBoolean>;
|
|
47
|
+
permissions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
48
|
+
}, z.core.$strip>>;
|
|
49
|
+
created: z.ZodOptional<z.ZodString>;
|
|
50
|
+
updated: z.ZodOptional<z.ZodString>;
|
|
51
|
+
}, z.core.$strict>;
|
|
52
|
+
export declare const SkillSchema: z.ZodObject<{
|
|
53
|
+
path: z.ZodString;
|
|
54
|
+
frontmatter: z.ZodObject<{
|
|
55
|
+
name: z.ZodString;
|
|
56
|
+
description: z.ZodString;
|
|
57
|
+
version: z.ZodString;
|
|
58
|
+
author: z.ZodOptional<z.ZodString>;
|
|
59
|
+
triggers: z.ZodArray<z.ZodString>;
|
|
60
|
+
inputs: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
61
|
+
name: z.ZodString;
|
|
62
|
+
type: z.ZodEnum<{
|
|
63
|
+
string: "string";
|
|
64
|
+
number: "number";
|
|
65
|
+
boolean: "boolean";
|
|
66
|
+
object: "object";
|
|
67
|
+
array: "array";
|
|
68
|
+
}>;
|
|
69
|
+
description: z.ZodString;
|
|
70
|
+
required: z.ZodDefault<z.ZodBoolean>;
|
|
71
|
+
default: z.ZodOptional<z.ZodAny>;
|
|
72
|
+
}, z.core.$strip>>>;
|
|
73
|
+
output: z.ZodOptional<z.ZodObject<{
|
|
74
|
+
type: z.ZodEnum<{
|
|
75
|
+
text: "text";
|
|
76
|
+
json: "json";
|
|
77
|
+
markdown: "markdown";
|
|
78
|
+
code: "code";
|
|
79
|
+
}>;
|
|
80
|
+
schema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
81
|
+
}, z.core.$strip>>;
|
|
82
|
+
constraints: z.ZodOptional<z.ZodObject<{
|
|
83
|
+
models: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
84
|
+
tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
85
|
+
memory: z.ZodDefault<z.ZodBoolean>;
|
|
86
|
+
permissions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
87
|
+
}, z.core.$strip>>;
|
|
88
|
+
created: z.ZodOptional<z.ZodString>;
|
|
89
|
+
updated: z.ZodOptional<z.ZodString>;
|
|
90
|
+
}, z.core.$strict>;
|
|
91
|
+
content: z.ZodString;
|
|
92
|
+
}, z.core.$strip>;
|
|
93
|
+
export type SkillFrontmatter = z.infer<typeof SkillFrontmatterSchema>;
|
|
94
|
+
export type SkillParameter = z.infer<typeof SkillParameterSchema>;
|
|
95
|
+
export type Skill = z.infer<typeof SkillSchema>;
|
|
96
|
+
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { ThothClient, createThothClient, type ThothClientConfig, type SessionOptions, type SessionResult, type PipelineUnit, type PipelineOutput, } from "./thoth-client";
|
|
2
|
+
export { SentinelService, createMorningBootWorkflow, createDeepResearchWorkflow, type SentinelConfig, type WorkflowDefinition, type WorkflowContext, type Trigger, type ScheduleTrigger, type FileChangeTrigger, type ManualTrigger, type TriggerType, } from "./sentinel-service";
|
|
3
|
+
export { SkillRunner, type SkillTest, type TestResult, } from "./skill-runner";
|
|
4
|
+
export * from "./workflows";
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { ThothClient, type SessionResult } from "./thoth-client";
|
|
2
|
+
import { type TemporalContext } from "../shared";
|
|
3
|
+
export type TriggerType = "schedule" | "file-change" | "manual";
|
|
4
|
+
export interface ScheduleTrigger {
|
|
5
|
+
type: "schedule";
|
|
6
|
+
cron?: string;
|
|
7
|
+
time?: string;
|
|
8
|
+
days?: Array<"mon" | "tue" | "wed" | "thu" | "fri" | "sat" | "sun">;
|
|
9
|
+
}
|
|
10
|
+
export interface FileChangeTrigger {
|
|
11
|
+
type: "file-change";
|
|
12
|
+
paths: string[];
|
|
13
|
+
debounceMs?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface ManualTrigger {
|
|
16
|
+
type: "manual";
|
|
17
|
+
}
|
|
18
|
+
export type Trigger = ScheduleTrigger | FileChangeTrigger | ManualTrigger;
|
|
19
|
+
export interface WorkflowDefinition {
|
|
20
|
+
name: string;
|
|
21
|
+
description?: string;
|
|
22
|
+
triggers: Trigger[];
|
|
23
|
+
quietHours?: {
|
|
24
|
+
start: string;
|
|
25
|
+
end: string;
|
|
26
|
+
};
|
|
27
|
+
execute: (context: WorkflowContext) => Promise<string>;
|
|
28
|
+
}
|
|
29
|
+
export interface WorkflowContext {
|
|
30
|
+
temporal: TemporalContext;
|
|
31
|
+
client: ThothClient;
|
|
32
|
+
triggerType: TriggerType;
|
|
33
|
+
triggerData?: unknown;
|
|
34
|
+
}
|
|
35
|
+
export interface SentinelConfig {
|
|
36
|
+
pollIntervalMs?: number;
|
|
37
|
+
quietHours?: {
|
|
38
|
+
start: string;
|
|
39
|
+
end: string;
|
|
40
|
+
};
|
|
41
|
+
enabled?: boolean;
|
|
42
|
+
}
|
|
43
|
+
export declare class SentinelService {
|
|
44
|
+
private client;
|
|
45
|
+
private config;
|
|
46
|
+
private workflows;
|
|
47
|
+
private schedules;
|
|
48
|
+
private running;
|
|
49
|
+
private pollTimer;
|
|
50
|
+
constructor(client: ThothClient, config?: SentinelConfig);
|
|
51
|
+
registerWorkflow(workflow: WorkflowDefinition): void;
|
|
52
|
+
unregisterWorkflow(name: string): void;
|
|
53
|
+
start(): Promise<void>;
|
|
54
|
+
stop(): void;
|
|
55
|
+
triggerWorkflow(name: string, triggerType?: TriggerType, triggerData?: unknown): Promise<SessionResult | null>;
|
|
56
|
+
listWorkflows(): Array<{
|
|
57
|
+
name: string;
|
|
58
|
+
description?: string;
|
|
59
|
+
triggers: Trigger[];
|
|
60
|
+
}>;
|
|
61
|
+
private tick;
|
|
62
|
+
private executeWorkflow;
|
|
63
|
+
private updateSchedules;
|
|
64
|
+
private updateNextRun;
|
|
65
|
+
private calculateNextRun;
|
|
66
|
+
private isQuietHours;
|
|
67
|
+
private isInTimeRange;
|
|
68
|
+
private timeToMinutes;
|
|
69
|
+
}
|
|
70
|
+
export declare function createDeepResearchWorkflow(): WorkflowDefinition;
|
|
71
|
+
export declare function createMorningBootWorkflow(): WorkflowDefinition;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ThothClient } from "./thoth-client";
|
|
2
|
+
export interface SkillTest {
|
|
3
|
+
name: string;
|
|
4
|
+
skillName: string;
|
|
5
|
+
input: string;
|
|
6
|
+
expectedOutput?: string | RegExp;
|
|
7
|
+
timeoutMs?: number;
|
|
8
|
+
}
|
|
9
|
+
export interface TestResult {
|
|
10
|
+
testName: string;
|
|
11
|
+
success: boolean;
|
|
12
|
+
output: string;
|
|
13
|
+
error?: string;
|
|
14
|
+
durationMs: number;
|
|
15
|
+
}
|
|
16
|
+
export declare class SkillRunner {
|
|
17
|
+
private client;
|
|
18
|
+
constructor(client: ThothClient);
|
|
19
|
+
runTest(test: SkillTest): Promise<TestResult>;
|
|
20
|
+
runSuite(tests: SkillTest[]): Promise<TestResult[]>;
|
|
21
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type OpencodeClient } from "@opencode-ai/sdk";
|
|
2
|
+
export interface ThothClientConfig {
|
|
3
|
+
baseUrl?: string;
|
|
4
|
+
spawnServer?: boolean;
|
|
5
|
+
port?: number;
|
|
6
|
+
defaultModel?: string;
|
|
7
|
+
client?: OpencodeClient;
|
|
8
|
+
}
|
|
9
|
+
export interface SessionOptions {
|
|
10
|
+
agent?: string;
|
|
11
|
+
model?: string;
|
|
12
|
+
title?: string;
|
|
13
|
+
files?: string[];
|
|
14
|
+
}
|
|
15
|
+
export interface SessionResult {
|
|
16
|
+
sessionId: string;
|
|
17
|
+
response: string;
|
|
18
|
+
success: boolean;
|
|
19
|
+
error?: string;
|
|
20
|
+
}
|
|
21
|
+
export type PipelineOutput = string | Array<PipelineOutput>;
|
|
22
|
+
export type PipelineUnit = {
|
|
23
|
+
prompt: string | ((input: PipelineOutput) => string);
|
|
24
|
+
options?: SessionOptions;
|
|
25
|
+
} | {
|
|
26
|
+
parallel: PipelineUnit[];
|
|
27
|
+
} | {
|
|
28
|
+
sequence: PipelineUnit[];
|
|
29
|
+
};
|
|
30
|
+
export declare class ThothClient {
|
|
31
|
+
private client;
|
|
32
|
+
private config;
|
|
33
|
+
private serverProcess;
|
|
34
|
+
constructor(config?: ThothClientConfig);
|
|
35
|
+
connect(): Promise<void>;
|
|
36
|
+
disconnect(): Promise<void>;
|
|
37
|
+
runSession(prompt: string, options?: SessionOptions): Promise<SessionResult>;
|
|
38
|
+
runPipeline(units: PipelineUnit[]): Promise<PipelineOutput[]>;
|
|
39
|
+
private executeUnit;
|
|
40
|
+
runParallel(tasks: Array<{
|
|
41
|
+
prompt: string;
|
|
42
|
+
options?: SessionOptions;
|
|
43
|
+
}>): Promise<SessionResult[]>;
|
|
44
|
+
abortSession(sessionId: string): Promise<void>;
|
|
45
|
+
listAgents(): Promise<string[]>;
|
|
46
|
+
isHealthy(): Promise<boolean>;
|
|
47
|
+
notify(message: string, level?: "info" | "success" | "warning" | "error"): Promise<void>;
|
|
48
|
+
showToast(message: string, variant?: "info" | "success" | "warning" | "error"): Promise<void>;
|
|
49
|
+
private extractResponseText;
|
|
50
|
+
}
|
|
51
|
+
export declare function createThothClient(config?: ThothClientConfig): Promise<ThothClient>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./skill-registry";
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type Skill } from "../schemas/skill";
|
|
2
|
+
export type SkillScope = "user" | "project" | "builtin";
|
|
3
|
+
export interface LoadedSkill {
|
|
4
|
+
name: string;
|
|
5
|
+
scope: SkillScope;
|
|
6
|
+
path: string;
|
|
7
|
+
data: Skill;
|
|
8
|
+
extras: {
|
|
9
|
+
references: string[];
|
|
10
|
+
scripts: string[];
|
|
11
|
+
assets: string[];
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export declare class SkillRegistry {
|
|
15
|
+
private skills;
|
|
16
|
+
private readonly npmDefaultsPath;
|
|
17
|
+
constructor();
|
|
18
|
+
loadSkills(): Promise<void>;
|
|
19
|
+
getSkill(name: string): LoadedSkill | undefined;
|
|
20
|
+
getAllSkills(): LoadedSkill[];
|
|
21
|
+
private discoverSkills;
|
|
22
|
+
private loadSingleSkill;
|
|
23
|
+
}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import { tool } from "@opencode-ai/plugin";
|
|
2
|
-
|
|
2
|
+
import type { SkillRegistry } from "../../services/skill-registry";
|
|
3
|
+
export declare function createSkillTool(registry: SkillRegistry): ReturnType<typeof tool>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "thoth-plugin",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.2",
|
|
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",
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
"thoth": "./dist/cli.js"
|
|
10
10
|
},
|
|
11
11
|
"files": [
|
|
12
|
-
"dist"
|
|
12
|
+
"dist",
|
|
13
|
+
"defaults"
|
|
13
14
|
],
|
|
14
15
|
"exports": {
|
|
15
16
|
".": {
|
|
@@ -21,6 +22,8 @@
|
|
|
21
22
|
"scripts": {
|
|
22
23
|
"build": "bun build src/index.ts src/cli.ts --outdir dist --target bun --format esm && cp -r defaults dist/ && (tsc --emitDeclarationOnly || true) && bun run build:schema",
|
|
23
24
|
"build:schema": "bun run script/build-schema.ts",
|
|
25
|
+
"lint:skills": "bun run script/lint-skills.ts",
|
|
26
|
+
"test:skills": "bun run script/test-skills.ts",
|
|
24
27
|
"clean": "rm -rf dist",
|
|
25
28
|
"prepublishOnly": "bun run clean && bun run build",
|
|
26
29
|
"typecheck": "tsc --noEmit",
|
|
@@ -44,11 +47,13 @@
|
|
|
44
47
|
},
|
|
45
48
|
"dependencies": {
|
|
46
49
|
"@opencode-ai/plugin": "^1.0.162",
|
|
50
|
+
"@opencode-ai/sdk": "^1.0.162",
|
|
47
51
|
"zod": "^4.1.8"
|
|
48
52
|
},
|
|
49
53
|
"devDependencies": {
|
|
50
54
|
"bun-types": "latest",
|
|
51
55
|
"typescript": "^5.7.3",
|
|
52
|
-
"zod-to-json-schema": "^3.25.1"
|
|
56
|
+
"zod-to-json-schema": "^3.25.1",
|
|
57
|
+
"yaml": "^2.7.0"
|
|
53
58
|
}
|
|
54
59
|
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|