@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.
- package/LICENSE +25 -0
- package/agent/AGENTS.md +145 -0
- package/agent/IDENTITY.md +13 -0
- package/agent/MISSION_CONTROL.md +121 -0
- package/agent/SOUL.md +146 -0
- package/agent/USER.md +41 -0
- package/dist/cli/bin.d.ts +3 -0
- package/dist/cli/bin.d.ts.map +1 -0
- package/dist/cli/bin.js +10 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/runner.d.ts +9 -0
- package/dist/cli/runner.d.ts.map +1 -0
- package/dist/cli/runner.js +45 -0
- package/dist/cli/runner.js.map +1 -0
- package/dist/cli/setup.d.ts +20 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +185 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/command/decision-store.d.ts +42 -0
- package/dist/command/decision-store.d.ts.map +1 -0
- package/dist/command/decision-store.js +176 -0
- package/dist/command/decision-store.js.map +1 -0
- package/dist/command/types.d.ts +103 -0
- package/dist/command/types.d.ts.map +1 -0
- package/dist/command/types.js +26 -0
- package/dist/command/types.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/memory/jessie-memory.d.ts +21 -0
- package/dist/memory/jessie-memory.d.ts.map +1 -0
- package/dist/memory/jessie-memory.js +64 -0
- package/dist/memory/jessie-memory.js.map +1 -0
- package/dist/plugin.d.ts +18 -7
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +147 -30
- package/dist/plugin.js.map +1 -1
- package/dist/tools/jessie-briefing.d.ts +39 -0
- package/dist/tools/jessie-briefing.d.ts.map +1 -0
- package/dist/tools/jessie-briefing.js +98 -0
- package/dist/tools/jessie-briefing.js.map +1 -0
- package/dist/tools/jessie-decide.d.ts +63 -0
- package/dist/tools/jessie-decide.d.ts.map +1 -0
- package/dist/tools/jessie-decide.js +174 -0
- package/dist/tools/jessie-decide.js.map +1 -0
- package/dist/tools/jessie-delegate.d.ts +60 -0
- package/dist/tools/jessie-delegate.d.ts.map +1 -0
- package/dist/tools/jessie-delegate.js +135 -0
- package/dist/tools/jessie-delegate.js.map +1 -0
- package/dist/tools/jessie-report.d.ts +39 -0
- package/dist/tools/jessie-report.d.ts.map +1 -0
- package/dist/tools/jessie-report.js +149 -0
- package/dist/tools/jessie-report.js.map +1 -0
- package/dist/tools/jessie-status.d.ts +29 -0
- package/dist/tools/jessie-status.d.ts.map +1 -0
- package/dist/tools/jessie-status.js +55 -0
- package/dist/tools/jessie-status.js.map +1 -0
- package/openclaw.plugin.json +15 -2
- 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
|
-
*
|
|
2
|
+
* Jessie (JESSIE2) — OpenClaw Plugin Entry Point
|
|
3
3
|
*
|
|
4
|
-
*
|
|
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
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
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
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA
|
|
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
|
-
*
|
|
2
|
+
* Jessie (JESSIE2) — OpenClaw Plugin Entry Point
|
|
3
3
|
*
|
|
4
|
-
*
|
|
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
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
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
|
-
|
|
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
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
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
|
-
|
|
48
|
-
console.log(`[jessie] Fleet message
|
|
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
|
-
|
|
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(
|
|
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
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,oEAAoE;AAEpE,SAAS,mBAAmB;IAC1B,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,aAAa;QACzB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,WAAW,CAAC,CAChD,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB;IACzB,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,eAAe,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,WAAW,EAAE,eAAe,CAAC;KACjE,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,UAAU,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,aAAa,CAAC,GAAQ;IAC7B,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;IAEjC,IAAI,UAAU,GAAwB,EAAE,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACpC,UAAU,GAAG,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAE9B,MAAM,GAAG,GAAG,EAAE,GAAG,UAAU,EAAE,GAAG,OAAO,EAAE,CAAC;IAE1C,OAAO;QACL,OAAO,EAAE,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO;QAC/E,0BAA0B,EACxB,OAAO,GAAG,CAAC,0BAA0B,KAAK,SAAS;YACjD,CAAC,CAAC,GAAG,CAAC,0BAA0B;YAChC,CAAC,CAAC,cAAc,CAAC,0BAA0B;KAChD,CAAC;AACJ,CAAC;AAED,oEAAoE;AAEpE,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAQ;IACvC,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAE/B,iEAAiE;IACjE,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;IAC7C,aAAa,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACvC,OAAO,CAAC,IAAI,CAAC,mDAAmD,EAAE,GAAG,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,IAAI,aAAa,GAAkB,YAAY,CAAC;IAChD,IAAI,gBAAgB,GAAe,IAAI,CAAC;IAExC,MAAM,iBAAiB,GAAG,GAAkB,EAAE,CAAC,aAAa,CAAC;IAC7D,MAAM,WAAW,GAAG,GAAe,EAAE,CAAC,gBAAgB,CAAC;IAEvD,kEAAkE;IAClE,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACrE,GAAG,CAAC,YAAY,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC;IACpD,GAAG,CAAC,YAAY,CAAC,kBAAkB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;IACjE,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;IAC/D,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAErE,iEAAiE;IACjE,GAAG,CAAC,eAAe,CAAC;QAClB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,gFAAgF;QAC7F,OAAO,CAAC,GAAQ;YACd,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACnD,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,EAAE,CAAC;YAE3C,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;gBACrC,OAAO;oBACL,IAAI,EAAE;wBACJ,wCAAwC;wBACxC,cAAc,aAAa,EAAE;wBAC7B,WAAW,OAAO,CAAC,WAAW,iBAAiB,OAAO,CAAC,cAAc,aAAa,OAAO,CAAC,SAAS,EAAE;wBACrG,uBAAuB,OAAO,CAAC,iBAAiB,EAAE;wBAClD,kBAAkB,OAAO,CAAC,YAAY,IAAI,MAAM,EAAE;wBAClD,EAAE;wBACF,0CAA0C;qBAC3C,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb,CAAC;YACJ,CAAC;YAED,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;gBACxB,OAAO,EAAE,IAAI,EAAE,gEAAgE,EAAE,CAAC;YACpF,CAAC;YAED,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;gBACzB,OAAO;oBACL,IAAI,EAAE;wBACJ,yBAAyB,OAAO,CAAC,WAAW,YAAY,OAAO,CAAC,cAAc,YAAY;wBAC1F,mBAAmB,OAAO,CAAC,SAAS,EAAE;wBACtC,EAAE;wBACF,uDAAuD;qBACxD,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb,CAAC;YACJ,CAAC;YAED,OAAO,EAAE,IAAI,EAAE,4CAA4C,EAAE,CAAC;QAChE,CAAC;KACF,CAAC,CAAC;IAEH,kEAAkE;IAClE,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;QACtB,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,iEAAiE;IACjE,MAAM,WAAW,GAAG,yBAAyB,CAAC;IAC9C,MAAM,CAAC,WAAW,CAAC;SAChB,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE,eAAe,EAAE,YAAY,EAAO,EAAE,EAAE;QACpG,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,gBAAgB,GAAG,GAAG,CAAC;YAEvB,MAAM,KAAK,GAAG,sBAAsB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACrD,KAAK,MAAM,IAAI,IAAI,KAAK;gBAAE,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAEjD,YAAY,CAAC,GAAG,EAAE;gBAChB,OAAO,EAAE;oBACP,mBAAmB,EAAE,mBAAmB;oBACxC,aAAa,EAAE,cAAc;oBAC7B,cAAc,EAAE,eAAe,EAAE,iBAAiB;oBAClD,iBAAiB;oBACjB,aAAa,EAAE,eAAe;oBAC9B,YAAY,EAAE,YAAY,EAAE,iBAAiB;oBAC7C,eAAe;iBAChB;gBACD,KAAK,CAAC,OAAO,CAAC,GAAQ;oBACpB,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,CAAC,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;oBAEtE,IAAI,GAAG,CAAC,MAAM,KAAK,aAAa,IAAI,GAAG,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;wBACnE,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC;wBAC/C,IAAI,YAAY,IAAI,GAAG,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;4BACnD,aAAa,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;wBAC9C,CAAC;oBACH,CAAC;gBACH,CAAC;aACF,CAAC,CAAC;YAEH,aAAa,GAAG,WAAW,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,UAAU,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC;SACD,KAAK,CAAC,GAAG,EAAE;QACV,aAAa,GAAG,YAAY,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEL,OAAO,CAAC,GAAG,CAAC,4HAA4H,CAAC,CAAC;AAC5I,CAAC"}
|
|
@@ -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"}
|