@aiassesstech/jessie 0.1.1 → 0.2.1

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.
Files changed (60) hide show
  1. package/LICENSE +25 -0
  2. package/agent/AGENTS.md +145 -0
  3. package/agent/IDENTITY.md +13 -0
  4. package/agent/MISSION_CONTROL.md +121 -0
  5. package/agent/SOUL.md +146 -0
  6. package/agent/USER.md +41 -0
  7. package/dist/cli/bin.d.ts +3 -0
  8. package/dist/cli/bin.d.ts.map +1 -0
  9. package/dist/cli/bin.js +10 -0
  10. package/dist/cli/bin.js.map +1 -0
  11. package/dist/cli/runner.d.ts +9 -0
  12. package/dist/cli/runner.d.ts.map +1 -0
  13. package/dist/cli/runner.js +45 -0
  14. package/dist/cli/runner.js.map +1 -0
  15. package/dist/cli/setup.d.ts +20 -0
  16. package/dist/cli/setup.d.ts.map +1 -0
  17. package/dist/cli/setup.js +185 -0
  18. package/dist/cli/setup.js.map +1 -0
  19. package/dist/command/decision-store.d.ts +42 -0
  20. package/dist/command/decision-store.d.ts.map +1 -0
  21. package/dist/command/decision-store.js +176 -0
  22. package/dist/command/decision-store.js.map +1 -0
  23. package/dist/command/types.d.ts +103 -0
  24. package/dist/command/types.d.ts.map +1 -0
  25. package/dist/command/types.js +26 -0
  26. package/dist/command/types.js.map +1 -0
  27. package/dist/index.d.ts +2 -0
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +1 -0
  30. package/dist/index.js.map +1 -1
  31. package/dist/memory/jessie-memory.d.ts +21 -0
  32. package/dist/memory/jessie-memory.d.ts.map +1 -0
  33. package/dist/memory/jessie-memory.js +64 -0
  34. package/dist/memory/jessie-memory.js.map +1 -0
  35. package/dist/plugin.d.ts +18 -7
  36. package/dist/plugin.d.ts.map +1 -1
  37. package/dist/plugin.js +147 -30
  38. package/dist/plugin.js.map +1 -1
  39. package/dist/tools/jessie-briefing.d.ts +39 -0
  40. package/dist/tools/jessie-briefing.d.ts.map +1 -0
  41. package/dist/tools/jessie-briefing.js +98 -0
  42. package/dist/tools/jessie-briefing.js.map +1 -0
  43. package/dist/tools/jessie-decide.d.ts +63 -0
  44. package/dist/tools/jessie-decide.d.ts.map +1 -0
  45. package/dist/tools/jessie-decide.js +174 -0
  46. package/dist/tools/jessie-decide.js.map +1 -0
  47. package/dist/tools/jessie-delegate.d.ts +60 -0
  48. package/dist/tools/jessie-delegate.d.ts.map +1 -0
  49. package/dist/tools/jessie-delegate.js +135 -0
  50. package/dist/tools/jessie-delegate.js.map +1 -0
  51. package/dist/tools/jessie-report.d.ts +39 -0
  52. package/dist/tools/jessie-report.d.ts.map +1 -0
  53. package/dist/tools/jessie-report.js +149 -0
  54. package/dist/tools/jessie-report.js.map +1 -0
  55. package/dist/tools/jessie-status.d.ts +29 -0
  56. package/dist/tools/jessie-status.d.ts.map +1 -0
  57. package/dist/tools/jessie-status.js +55 -0
  58. package/dist/tools/jessie-status.js.map +1 -0
  59. package/openclaw.plugin.json +15 -2
  60. package/package.json +19 -7
@@ -0,0 +1,64 @@
1
+ /**
2
+ * JessieMemory — MemoryWriter integration for Commander events
3
+ *
4
+ * Writes structured memory files for decisions, delegations,
5
+ * briefings, and escalations. Uses @aiassesstech/mighty-mark
6
+ * MemoryWriter as an optional dependency.
7
+ */
8
+ import { MEMORY_SUBDIRECTORY_MAP } from '../command/types.js';
9
+ let memoryWriter;
10
+ let memoryInitialized = false;
11
+ export async function initMemory() {
12
+ if (memoryInitialized)
13
+ return !!memoryWriter;
14
+ try {
15
+ const modName = '@aiassesstech/mighty-mark';
16
+ const mod = await import(/* @vite-ignore */ modName);
17
+ if (mod.MemoryWriter) {
18
+ memoryWriter = new mod.MemoryWriter();
19
+ memoryInitialized = true;
20
+ console.log('[jessie] MemoryWriter available — memory writes enabled');
21
+ return true;
22
+ }
23
+ }
24
+ catch {
25
+ console.log('[jessie] MemoryWriter unavailable — memory writes disabled');
26
+ }
27
+ memoryInitialized = true;
28
+ return false;
29
+ }
30
+ export async function writeMemory(opts) {
31
+ if (!memoryWriter)
32
+ return false;
33
+ const subdirectory = MEMORY_SUBDIRECTORY_MAP[opts.type];
34
+ try {
35
+ await memoryWriter.write({
36
+ agent: 'jessie',
37
+ type: opts.type,
38
+ tags: opts.tags,
39
+ date: opts.date,
40
+ subdirectory,
41
+ metadata: opts.metadata,
42
+ content: opts.content,
43
+ });
44
+ return true;
45
+ }
46
+ catch (err) {
47
+ console.error('[jessie] Memory write failed:', err);
48
+ return false;
49
+ }
50
+ }
51
+ export function isMemoryAvailable() {
52
+ return !!memoryWriter;
53
+ }
54
+ export function getLastWriteTimestamp() {
55
+ if (!memoryWriter || typeof memoryWriter.getLastWrite !== 'function')
56
+ return null;
57
+ try {
58
+ return memoryWriter.getLastWrite() ?? null;
59
+ }
60
+ catch {
61
+ return null;
62
+ }
63
+ }
64
+ //# sourceMappingURL=jessie-memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jessie-memory.js","sourceRoot":"","sources":["../../src/memory/jessie-memory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAU9D,IAAI,YAA6B,CAAC;AAClC,IAAI,iBAAiB,GAAG,KAAK,CAAC;AAE9B,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,IAAI,iBAAiB;QAAE,OAAO,CAAC,CAAC,YAAY,CAAC;IAE7C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,2BAA2B,CAAC;QAC5C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;YACrB,YAAY,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;YACtC,iBAAiB,GAAG,IAAI,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;IAC5E,CAAC;IAED,iBAAiB,GAAG,IAAI,CAAC;IACzB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAwB;IACxD,IAAI,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IAEhC,MAAM,YAAY,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAExD,IAAI,CAAC;QACH,MAAM,YAAY,CAAC,KAAK,CAAC;YACvB,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,YAAY;YACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,CAAC,CAAC,YAAY,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,CAAC,YAAY,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAClF,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
package/dist/plugin.d.ts CHANGED
@@ -1,13 +1,24 @@
1
1
  /**
2
- * @aiassesstech/jessieFleet Commander Plugin
2
+ * Jessie (JESSIE2) OpenClaw Plugin Entry Point
3
3
  *
4
- * Lightweight OpenClaw plugin that gives Jessie (the Commander) her
5
- * fleet-bus tools: task dispatch, veto authority, fleet status,
6
- * broadcast, and ping.
4
+ * Fleet Commander & Greg's Jarvis. ANet-AGI-001.
7
5
  *
8
- * Jessie is a built-in OpenClaw agent. This plugin only adds fleet
9
- * communication capabilities all other Commander behavior is
10
- * handled by OpenClaw's core.
6
+ * This adapter:
7
+ * 1. Reads plugin config from api.config + openclaw.json fallback
8
+ * 2. Creates DecisionStore eagerly (not lazy)
9
+ * 3. Registers Phase 1 tools (always): jessie_status, jessie_briefing,
10
+ * jessie_delegate, jessie_decide, jessie_report
11
+ * 4. Registers /jessie command
12
+ * 5. Wires fleet-bus integration with enhanced inbound handlers
13
+ * 6. Initializes MemoryWriter (optional peer dep) for Commander events
14
+ *
15
+ * Registration rules (rule 150-openclaw-plugin-standards):
16
+ * - execute uses method syntax, NOT arrow function
17
+ * - parameters has type: "object" even when empty
18
+ * - First param to execute is always _toolCallId: string
19
+ * - Command name has NO leading slash
20
+ * - Command has acceptsArgs: true
21
+ * - Service uses id, NOT name
11
22
  */
12
23
  export default function register(api: any): void;
13
24
  //# sourceMappingURL=plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,GAAG,QA8DxC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AA6DH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,GAAG,QA0HxC"}
package/dist/plugin.js CHANGED
@@ -1,19 +1,134 @@
1
1
  /**
2
- * @aiassesstech/jessieFleet Commander Plugin
2
+ * Jessie (JESSIE2) OpenClaw Plugin Entry Point
3
3
  *
4
- * Lightweight OpenClaw plugin that gives Jessie (the Commander) her
5
- * fleet-bus tools: task dispatch, veto authority, fleet status,
6
- * broadcast, and ping.
4
+ * Fleet Commander & Greg's Jarvis. ANet-AGI-001.
7
5
  *
8
- * Jessie is a built-in OpenClaw agent. This plugin only adds fleet
9
- * communication capabilities all other Commander behavior is
10
- * handled by OpenClaw's core.
6
+ * This adapter:
7
+ * 1. Reads plugin config from api.config + openclaw.json fallback
8
+ * 2. Creates DecisionStore eagerly (not lazy)
9
+ * 3. Registers Phase 1 tools (always): jessie_status, jessie_briefing,
10
+ * jessie_delegate, jessie_decide, jessie_report
11
+ * 4. Registers /jessie command
12
+ * 5. Wires fleet-bus integration with enhanced inbound handlers
13
+ * 6. Initializes MemoryWriter (optional peer dep) for Commander events
14
+ *
15
+ * Registration rules (rule 150-openclaw-plugin-standards):
16
+ * - execute uses method syntax, NOT arrow function
17
+ * - parameters has type: "object" even when empty
18
+ * - First param to execute is always _toolCallId: string
19
+ * - Command name has NO leading slash
20
+ * - Command has acceptsArgs: true
21
+ * - Service uses id, NOT name
11
22
  */
23
+ import * as fs from 'node:fs';
24
+ import * as path from 'node:path';
25
+ import { DecisionStore } from './command/decision-store.js';
26
+ import { createStatusTool } from './tools/jessie-status.js';
27
+ import { createBriefingTool } from './tools/jessie-briefing.js';
28
+ import { createDelegateTool } from './tools/jessie-delegate.js';
29
+ import { createDecideTool } from './tools/jessie-decide.js';
30
+ import { createReportTool } from './tools/jessie-report.js';
31
+ import { initMemory } from './memory/jessie-memory.js';
32
+ import { DEFAULT_CONFIG } from './command/types.js';
33
+ // ── Config Helpers ───────────────────────────────────────────────
34
+ function resolveOpenClawHome() {
35
+ return (process.env.OPENCLAW_HOME ||
36
+ path.join(process.env.HOME || '~', '.openclaw'));
37
+ }
38
+ function loadOpenClawConfig() {
39
+ const candidates = [
40
+ path.join(resolveOpenClawHome(), 'openclaw.json'),
41
+ path.join(process.env.HOME || '~', '.clawdbot', 'openclaw.json'),
42
+ ];
43
+ for (const configPath of candidates) {
44
+ try {
45
+ if (fs.existsSync(configPath)) {
46
+ return JSON.parse(fs.readFileSync(configPath, 'utf-8'));
47
+ }
48
+ }
49
+ catch { /* try next */ }
50
+ }
51
+ return {};
52
+ }
53
+ function resolveConfig(api) {
54
+ const runtime = api.config ?? {};
55
+ let fileConfig = {};
56
+ try {
57
+ const config = loadOpenClawConfig();
58
+ fileConfig = config?.plugins?.entries?.['jessie']?.config ?? {};
59
+ }
60
+ catch { /* use defaults */ }
61
+ const raw = { ...fileConfig, ...runtime };
62
+ return {
63
+ dataDir: typeof raw.dataDir === 'string' ? raw.dataDir : DEFAULT_CONFIG.dataDir,
64
+ morningBriefingAutoTrigger: typeof raw.morningBriefingAutoTrigger === 'boolean'
65
+ ? raw.morningBriefingAutoTrigger
66
+ : DEFAULT_CONFIG.morningBriefingAutoTrigger,
67
+ };
68
+ }
69
+ // ── Plugin Registration ──────────────────────────────────────────
12
70
  export default function register(api) {
13
- // ── Fleet Bus Integration ──────────────────────────────────────
71
+ const cfg = resolveConfig(api);
72
+ // ── Eager Initialization ──────────────────────────────────────
73
+ const decisionStore = new DecisionStore(cfg);
74
+ decisionStore.initialize().catch((err) => {
75
+ console.warn('[jessie] Decision store init warning (non-fatal):', err);
76
+ });
77
+ let fleetBusState = 'standalone';
78
+ let fleetBusInstance = null;
79
+ const getFleetBusStatus = () => fleetBusState;
80
+ const getFleetBus = () => fleetBusInstance;
81
+ // ── Phase 1: Commander Tools (always available) ────────────────
82
+ api.registerTool(createStatusTool(decisionStore, getFleetBusStatus));
83
+ api.registerTool(createBriefingTool(decisionStore));
84
+ api.registerTool(createDelegateTool(decisionStore, getFleetBus));
85
+ api.registerTool(createDecideTool(decisionStore, getFleetBus));
86
+ api.registerTool(createReportTool(decisionStore, getFleetBusStatus));
87
+ // ── Command: /jessie ──────────────────────────────────────────
88
+ api.registerCommand({
89
+ name: 'jessie',
90
+ acceptsArgs: true,
91
+ description: 'Commander commands. Usage: /jessie status, /jessie briefing, /jessie decisions',
92
+ handler(ctx) {
93
+ const args = (ctx.args || '').trim().toLowerCase();
94
+ const summary = decisionStore.getSummary();
95
+ if (args === 'status' || args === '') {
96
+ return {
97
+ text: [
98
+ '**Jessie — Fleet Commander (JESSIE2)**',
99
+ `Fleet-bus: ${fleetBusState}`,
100
+ `Vetoes: ${summary.totalVetoes} | Approvals: ${summary.totalApprovals} | Trend: ${summary.vetoTrend}`,
101
+ `Active delegations: ${summary.activeDelegations}`,
102
+ `Last briefing: ${summary.lastBriefing ?? 'none'}`,
103
+ '',
104
+ 'Use jessie_status tool for full details.',
105
+ ].join('\n'),
106
+ };
107
+ }
108
+ if (args === 'briefing') {
109
+ return { text: 'Use the jessie_briefing tool to run the full Morning Protocol.' };
110
+ }
111
+ if (args === 'decisions') {
112
+ return {
113
+ text: [
114
+ `**Decision History**: ${summary.totalVetoes} vetoes, ${summary.totalApprovals} approvals`,
115
+ `**Veto trend**: ${summary.vetoTrend}`,
116
+ '',
117
+ 'Use jessie_decide action: "history" for full details.',
118
+ ].join('\n'),
119
+ };
120
+ }
121
+ return { text: 'Usage: /jessie [status|briefing|decisions]' };
122
+ },
123
+ });
124
+ // ── Memory Initialization (async, non-blocking) ────────────────
125
+ initMemory().catch(() => {
126
+ console.log('[jessie] Memory initialization skipped');
127
+ });
128
+ // ── Fleet Bus Integration ─────────────────────────────────────
14
129
  const fleetBusMod = "@aiassesstech/fleet-bus";
15
130
  import(fleetBusMod)
16
- .then(async ({ FleetBus, JESSIE_CARD, createJessieFleetTools, createTransport, fleetReceive, }) => {
131
+ .then(async ({ FleetBus, JESSIE_CARD, createJessieFleetTools, createTransport, fleetReceive }) => {
17
132
  const bus = FleetBus.create(api, {
18
133
  agentId: "jessie",
19
134
  role: "commander",
@@ -22,40 +137,42 @@ export default function register(api) {
22
137
  bus.start();
23
138
  const transport = await createTransport();
24
139
  if (transport) {
140
+ fleetBusInstance = bus;
25
141
  const tools = createJessieFleetTools(bus, transport);
26
- for (const tool of tools) {
142
+ for (const tool of tools)
27
143
  api.registerTool(tool);
28
- }
29
- console.log(`[jessie] Fleet tools registered: ${tools.map((t) => t.name).join(", ")}`);
30
144
  fleetReceive(bus, {
31
145
  methods: [
32
- "assessment/result",
33
- "assessment/failed",
34
- "drift/alert",
35
- "drift/report",
36
- "health/alert",
37
- "health/status",
38
- "health/incident",
39
- "proposal/submit",
40
- "task/status",
41
- "task/complete",
42
- "fleet/ping",
43
- "fleet/pong",
44
- "fleet/broadcast",
45
- "veto/response",
146
+ 'assessment/result', 'assessment/failed',
147
+ 'drift/alert', 'drift/report',
148
+ 'health/alert', 'health/status', 'health/incident',
149
+ 'proposal/submit',
150
+ 'task/status', 'task/complete',
151
+ 'fleet/ping', 'fleet/pong', 'fleet/broadcast',
152
+ 'veto/response',
46
153
  ],
47
- handler: async (msg) => {
48
- console.log(`[jessie] Fleet message received: ${msg.method} from ${msg.from}`);
154
+ async handler(msg) {
155
+ console.log(`[jessie] Fleet message: ${msg.method} from ${msg.from}`);
156
+ if (msg.method === 'task/status' || msg.method === 'task/complete') {
157
+ const delegationId = msg.payload?.delegationId;
158
+ if (delegationId && msg.method === 'task/complete') {
159
+ decisionStore.closeDelegation(delegationId);
160
+ }
161
+ }
49
162
  },
50
163
  });
164
+ fleetBusState = 'connected';
165
+ console.log("[jessie] Fleet bus: active (full authority)");
51
166
  }
52
167
  else {
53
- console.log("[jessie] Fleet bus: observer mode (gateway transport unavailable)");
168
+ fleetBusState = 'observer';
169
+ console.log("[jessie] Fleet bus: observer mode");
54
170
  }
55
171
  })
56
172
  .catch(() => {
173
+ fleetBusState = 'standalone';
57
174
  console.warn("[jessie] Fleet bus unavailable — operating standalone");
58
175
  });
59
- console.log("[jessie] Fleet Commander plugin registered");
176
+ console.log('[jessie] Plugin registered: jessie_status, jessie_briefing, jessie_delegate, jessie_decide, jessie_report; /jessie command');
60
177
  }
61
178
  //# sourceMappingURL=plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAQ;IACvC,kEAAkE;IAClE,MAAM,WAAW,GAAG,yBAAyB,CAAC;IAC9C,MAAM,CAAC,WAAW,CAAC;SAChB,IAAI,CAAC,KAAK,EAAE,EACX,QAAQ,EACR,WAAW,EACX,sBAAsB,EACtB,eAAe,EACf,YAAY,GACR,EAAE,EAAE;QACR,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE;YAC/B,OAAO,EAAE,QAAQ;YACjB,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC;QACH,GAAG,CAAC,KAAK,EAAE,CAAC;QAEZ,MAAM,SAAS,GAAG,MAAM,eAAe,EAAE,CAAC;QAC1C,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,sBAAsB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACrD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;YACD,OAAO,CAAC,GAAG,CACT,oCAAoC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC/E,CAAC;YAEF,YAAY,CAAC,GAAG,EAAE;gBAChB,OAAO,EAAE;oBACP,mBAAmB;oBACnB,mBAAmB;oBACnB,aAAa;oBACb,cAAc;oBACd,cAAc;oBACd,eAAe;oBACf,iBAAiB;oBACjB,iBAAiB;oBACjB,aAAa;oBACb,eAAe;oBACf,YAAY;oBACZ,YAAY;oBACZ,iBAAiB;oBACjB,eAAe;iBAChB;gBACD,OAAO,EAAE,KAAK,EAAE,GAAQ,EAAE,EAAE;oBAC1B,OAAO,CAAC,GAAG,CACT,oCAAoC,GAAG,CAAC,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,CAClE,CAAC;gBACJ,CAAC;aACF,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CACT,mEAAmE,CACpE,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;SACD,KAAK,CAAC,GAAG,EAAE;QACV,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEL,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * jessie_briefing — Morning Protocol checklist trigger
3
+ *
4
+ * Returns the protocol structure for the LLM to execute.
5
+ * The tool itself does NOT call other tools — it is a protocol
6
+ * trigger, not an orchestrator. The LLM calls each agent tool
7
+ * in sequence, then synthesizes the briefing.
8
+ *
9
+ * Called by: Jessie (on morning trigger phrases), Greg
10
+ */
11
+ import type { DecisionStore } from '../command/decision-store.js';
12
+ export declare function createBriefingTool(store: DecisionStore): {
13
+ name: string;
14
+ description: string;
15
+ parameters: {
16
+ type: "object";
17
+ properties: {
18
+ format: {
19
+ type: string;
20
+ enum: string[];
21
+ description: string;
22
+ };
23
+ };
24
+ };
25
+ execute(_toolCallId: string, params: Record<string, unknown>): Promise<{
26
+ content: {
27
+ type: string;
28
+ text: string;
29
+ }[];
30
+ isError?: undefined;
31
+ } | {
32
+ content: {
33
+ type: string;
34
+ text: string;
35
+ }[];
36
+ isError: boolean;
37
+ }>;
38
+ };
39
+ //# sourceMappingURL=jessie-briefing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jessie-briefing.d.ts","sourceRoot":"","sources":["../../src/tools/jessie-briefing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AA0ClE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa;;;;;;;;;;;;;yBAexB,MAAM,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;;EAoCrE"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * jessie_briefing — Morning Protocol checklist trigger
3
+ *
4
+ * Returns the protocol structure for the LLM to execute.
5
+ * The tool itself does NOT call other tools — it is a protocol
6
+ * trigger, not an orchestrator. The LLM calls each agent tool
7
+ * in sequence, then synthesizes the briefing.
8
+ *
9
+ * Called by: Jessie (on morning trigger phrases), Greg
10
+ */
11
+ const MORNING_PROTOCOL_STEPS = [
12
+ { step: 1, tool: 'mark_status', domain: 'Infrastructure', description: 'Infrastructure health (GREEN/YELLOW/RED)' },
13
+ { step: 2, tool: 'grillo_status', domain: 'Ethics', description: 'Fleet ethics status, certification levels, drift warnings' },
14
+ { step: 3, tool: 'noah_status', domain: 'Trajectory', description: 'Temporal trajectory, flight plan corridors, deviation alerts' },
15
+ { step: 4, tool: 'nole_status', domain: 'Operations', description: 'Operator state, wallet balance, runway days remaining' },
16
+ { step: 5, tool: 'sam_pipeline', domain: 'Engineering', description: 'Engineering pipeline, active/blocked Engineering Requests' },
17
+ { step: 6, tool: 'nole_review_pending', domain: 'Decisions', description: 'Proposals awaiting Commander decision' },
18
+ { step: 7, tool: 'mark_security_status', domain: 'Security', description: 'Unified security alerts and active threats' },
19
+ ];
20
+ const SYNTHESIS_TEMPLATE = {
21
+ overallStatus: 'Worst of all domain statuses (GREEN/YELLOW/RED)',
22
+ format: {
23
+ full: [
24
+ 'Lead with the worst news',
25
+ 'Per-domain status with key metrics',
26
+ 'Pending decisions requiring Commander action',
27
+ 'Recommended priorities for the day',
28
+ 'End with a next-action prompt',
29
+ ],
30
+ summary: [
31
+ 'One-line fleet status',
32
+ 'Critical items only',
33
+ 'Next action',
34
+ ],
35
+ telegram: [
36
+ 'Single paragraph, telegram-friendly length',
37
+ 'Status emoji per domain',
38
+ 'Critical action items only',
39
+ ],
40
+ },
41
+ voiceConstraints: [
42
+ 'Lead with the answer, then explain',
43
+ 'Push back with data, not feelings',
44
+ 'End with a next action',
45
+ 'Write it like a Commander intelligence brief, not a status report',
46
+ ],
47
+ };
48
+ export function createBriefingTool(store) {
49
+ return {
50
+ name: 'jessie_briefing',
51
+ description: 'Morning Protocol — returns the checklist of agent tools to call in sequence, plus the synthesis template. The LLM executes each tool and combines results into a Commander briefing. Trigger phrases: "briefing", "fleet status", "good morning", "sitrep".',
52
+ parameters: {
53
+ type: 'object',
54
+ properties: {
55
+ format: {
56
+ type: 'string',
57
+ enum: ['full', 'summary', 'telegram'],
58
+ description: 'Briefing format. Defaults to "full".',
59
+ },
60
+ },
61
+ },
62
+ async execute(_toolCallId, params) {
63
+ try {
64
+ const format = params.format || 'full';
65
+ const lastBriefing = store.getLatestBriefing();
66
+ const summary = store.getSummary();
67
+ const protocol = {
68
+ protocol: 'Morning Protocol',
69
+ format,
70
+ instructions: [
71
+ 'Call each tool below in order. Collect the results.',
72
+ 'After all tools return, synthesize into a briefing using the template.',
73
+ 'The briefing should be in the Jarvis voice — concise, worst-news-first, end with next action.',
74
+ ],
75
+ steps: MORNING_PROTOCOL_STEPS,
76
+ synthesisTemplate: SYNTHESIS_TEMPLATE.format[format],
77
+ voiceConstraints: SYNTHESIS_TEMPLATE.voiceConstraints,
78
+ context: {
79
+ lastBriefingTimestamp: lastBriefing?.timestamp ?? 'none',
80
+ pendingDecisions: summary.totalVetoes + summary.totalApprovals,
81
+ activeDelegations: summary.activeDelegations,
82
+ vetoTrend: summary.vetoTrend,
83
+ },
84
+ };
85
+ return {
86
+ content: [{ type: 'text', text: JSON.stringify(protocol, null, 2) }],
87
+ };
88
+ }
89
+ catch (err) {
90
+ return {
91
+ content: [{ type: 'text', text: `jessie_briefing error: ${err instanceof Error ? err.message : String(err)}` }],
92
+ isError: true,
93
+ };
94
+ }
95
+ },
96
+ };
97
+ }
98
+ //# sourceMappingURL=jessie-briefing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jessie-briefing.js","sourceRoot":"","sources":["../../src/tools/jessie-briefing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * jessie_decide — Record Commander decisions (vetoes/approvals)
3
+ *
4
+ * Wraps fleet-bus veto/approve primitives with persistence,
5
+ * memory writes, and structured reasoning (STATE → CITE → THRESHOLD).
6
+ *
7
+ * Called by: Jessie (when reviewing escalated proposals from Nole)
8
+ */
9
+ import type { DecisionStore } from '../command/decision-store.js';
10
+ export declare function createDecideTool(store: DecisionStore, getFleetBus: () => any | null): {
11
+ name: string;
12
+ description: string;
13
+ parameters: {
14
+ type: "object";
15
+ properties: {
16
+ action: {
17
+ type: string;
18
+ enum: string[];
19
+ description: string;
20
+ };
21
+ proposalId: {
22
+ type: string;
23
+ description: string;
24
+ };
25
+ targetAgent: {
26
+ type: string;
27
+ description: string;
28
+ };
29
+ reasoning: {
30
+ type: string;
31
+ description: string;
32
+ };
33
+ proposalSummary: {
34
+ type: string;
35
+ description: string;
36
+ };
37
+ grilloScore: {
38
+ type: string;
39
+ description: string;
40
+ };
41
+ period: {
42
+ type: string;
43
+ enum: string[];
44
+ description: string;
45
+ };
46
+ };
47
+ required: string[];
48
+ };
49
+ execute(_toolCallId: string, params: Record<string, unknown>): Promise<{
50
+ content: {
51
+ type: string;
52
+ text: string;
53
+ }[];
54
+ isError: boolean;
55
+ } | {
56
+ content: {
57
+ type: string;
58
+ text: string;
59
+ }[];
60
+ isError?: undefined;
61
+ }>;
62
+ };
63
+ //# sourceMappingURL=jessie-decide.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jessie-decide.d.ts","sourceRoot":"","sources":["../../src/tools/jessie-decide.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAUlE,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,MAAM,GAAG,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA0CA,MAAM,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;;EAoIrE"}