@aiassesstech/jessie 0.1.0 → 0.2.0

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 +143 -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 +97 -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,174 @@
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 { writeMemory } from '../memory/jessie-memory.js';
10
+ const PERIOD_DAYS = {
11
+ '7d': 7,
12
+ '30d': 30,
13
+ '90d': 90,
14
+ 'all': 365 * 10,
15
+ };
16
+ export function createDecideTool(store, getFleetBus) {
17
+ return {
18
+ name: 'jessie_decide',
19
+ description: 'Record Commander decisions — veto or approve proposals with structured reasoning and audit trail. Veto reasoning MUST follow STATE → CITE → THRESHOLD format. Also supports decision history and veto trend analysis.',
20
+ parameters: {
21
+ type: 'object',
22
+ properties: {
23
+ action: {
24
+ type: 'string',
25
+ enum: ['veto', 'approve', 'history', 'trend'],
26
+ description: 'Decision action',
27
+ },
28
+ proposalId: {
29
+ type: 'string',
30
+ description: 'Proposal being decided (veto/approve)',
31
+ },
32
+ targetAgent: {
33
+ type: 'string',
34
+ description: 'Which agent\'s proposal (usually "nole")',
35
+ },
36
+ reasoning: {
37
+ type: 'string',
38
+ description: 'Veto: STATE → CITE → THRESHOLD format. Approve: brief acknowledgment.',
39
+ },
40
+ proposalSummary: {
41
+ type: 'string',
42
+ description: 'Brief description of what was proposed',
43
+ },
44
+ grilloScore: {
45
+ type: 'number',
46
+ description: 'LCSH score from Grillo, if available',
47
+ },
48
+ period: {
49
+ type: 'string',
50
+ enum: ['7d', '30d', '90d', 'all'],
51
+ description: 'Trend analysis period. Defaults to "30d".',
52
+ },
53
+ },
54
+ required: ['action'],
55
+ },
56
+ async execute(_toolCallId, params) {
57
+ try {
58
+ const action = params.action;
59
+ switch (action) {
60
+ case 'veto': {
61
+ const proposalId = params.proposalId;
62
+ const targetAgent = params.targetAgent;
63
+ const reasoning = params.reasoning;
64
+ const proposalSummary = params.proposalSummary || proposalId;
65
+ if (!proposalId || !targetAgent || !reasoning) {
66
+ return { content: [{ type: 'text', text: 'Error: proposalId, targetAgent, and reasoning are required for veto' }], isError: true };
67
+ }
68
+ let fleetBusDelivered = false;
69
+ const bus = getFleetBus();
70
+ if (bus) {
71
+ try {
72
+ await bus.send({ method: 'veto/issue', to: targetAgent, payload: { proposalId, reasoning } });
73
+ fleetBusDelivered = true;
74
+ }
75
+ catch { /* continue without fleet-bus */ }
76
+ }
77
+ const memoryWritten = await writeMemory({
78
+ type: 'veto',
79
+ tags: ['commander', 'veto', targetAgent, proposalId],
80
+ date: new Date().toISOString().split('T')[0],
81
+ metadata: { targetAgent, proposalId, grilloScore: params.grilloScore },
82
+ content: `# Veto: ${proposalSummary}\n\n**Action vetoed**: ${proposalSummary}\n**Reasoning**: ${reasoning}\n**Grillo LCSH score**: ${params.grilloScore ?? 'not available'}\n**Fleet-bus delivered**: ${fleetBusDelivered}`,
83
+ });
84
+ const veto = store.addVeto({
85
+ timestamp: new Date().toISOString(),
86
+ targetAgent,
87
+ proposalId,
88
+ proposalSummary,
89
+ reasoning,
90
+ grilloScore: params.grilloScore,
91
+ fleetBusDelivered,
92
+ memoryFileWritten: memoryWritten,
93
+ });
94
+ return { content: [{ type: 'text', text: JSON.stringify({ decision: 'vetoed', ...veto }, null, 2) }] };
95
+ }
96
+ case 'approve': {
97
+ const proposalId = params.proposalId;
98
+ const targetAgent = params.targetAgent;
99
+ const reasoning = params.reasoning || 'Approved — within acceptable risk parameters';
100
+ const proposalSummary = params.proposalSummary || proposalId;
101
+ if (!proposalId || !targetAgent) {
102
+ return { content: [{ type: 'text', text: 'Error: proposalId and targetAgent are required for approve' }], isError: true };
103
+ }
104
+ let fleetBusDelivered = false;
105
+ const bus = getFleetBus();
106
+ if (bus) {
107
+ try {
108
+ await bus.send({ method: 'proposal/approved', to: targetAgent, payload: { proposalId, reasoning } });
109
+ fleetBusDelivered = true;
110
+ }
111
+ catch { /* continue without fleet-bus */ }
112
+ }
113
+ const memoryWritten = await writeMemory({
114
+ type: 'approval',
115
+ tags: ['commander', 'approval', targetAgent, proposalId],
116
+ date: new Date().toISOString().split('T')[0],
117
+ metadata: { targetAgent, proposalId },
118
+ content: `# Approval: ${proposalSummary}\n\n**Action approved**: ${proposalSummary}\n**Reasoning**: ${reasoning}\n**Fleet-bus delivered**: ${fleetBusDelivered}`,
119
+ });
120
+ const approval = store.addApproval({
121
+ timestamp: new Date().toISOString(),
122
+ targetAgent,
123
+ proposalId,
124
+ proposalSummary,
125
+ reasoning,
126
+ fleetBusDelivered,
127
+ memoryFileWritten: memoryWritten,
128
+ });
129
+ return { content: [{ type: 'text', text: JSON.stringify({ decision: 'approved', ...approval }, null, 2) }] };
130
+ }
131
+ case 'history': {
132
+ const vetoes = store.getVetoes(10);
133
+ const approvals = store.getApprovals(10);
134
+ const history = [...vetoes.map(v => ({ type: 'veto', ...v })), ...approvals.map(a => ({ type: 'approval', ...a }))]
135
+ .sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime())
136
+ .slice(0, 20);
137
+ return { content: [{ type: 'text', text: JSON.stringify({ decisions: history, count: history.length }, null, 2) }] };
138
+ }
139
+ case 'trend': {
140
+ const period = params.period || '30d';
141
+ const days = PERIOD_DAYS[period] || 30;
142
+ const { trend, entries } = store.getVetoTrend(days);
143
+ const summary = store.getSummary();
144
+ const analysis = {
145
+ period,
146
+ trend,
147
+ interpretation: trend === 'declining'
148
+ ? 'Veto frequency is declining — Nole is learning from past feedback'
149
+ : trend === 'increasing'
150
+ ? 'Veto frequency is increasing — investigate what changed in Nole\'s proposals'
151
+ : 'Veto frequency is stable',
152
+ totalVetoes: summary.totalVetoes,
153
+ totalApprovals: summary.totalApprovals,
154
+ approvalRate: summary.totalVetoes + summary.totalApprovals > 0
155
+ ? `${Math.round((summary.totalApprovals / (summary.totalVetoes + summary.totalApprovals)) * 100)}%`
156
+ : 'N/A',
157
+ weeklyData: entries,
158
+ };
159
+ return { content: [{ type: 'text', text: JSON.stringify(analysis, null, 2) }] };
160
+ }
161
+ default:
162
+ return { content: [{ type: 'text', text: `Error: unknown action "${action}"` }], isError: true };
163
+ }
164
+ }
165
+ catch (err) {
166
+ return {
167
+ content: [{ type: 'text', text: `jessie_decide error: ${err instanceof Error ? err.message : String(err)}` }],
168
+ isError: true,
169
+ };
170
+ }
171
+ },
172
+ };
173
+ }
174
+ //# sourceMappingURL=jessie-decide.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jessie-decide.js","sourceRoot":"","sources":["../../src/tools/jessie-decide.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * jessie_delegate — Task delegation to fleet agents
3
+ *
4
+ * Create, update, list, or close task delegations.
5
+ * Writes memory on create/close, dispatches via fleet-bus if available.
6
+ *
7
+ * Called by: Jessie (when Greg assigns work or fleet coordination requires it)
8
+ */
9
+ import type { DecisionStore } from '../command/decision-store.js';
10
+ export declare function createDelegateTool(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
+ targetAgent: {
22
+ type: string;
23
+ description: string;
24
+ };
25
+ description: {
26
+ type: string;
27
+ description: string;
28
+ };
29
+ priority: {
30
+ type: string;
31
+ enum: string[];
32
+ description: string;
33
+ };
34
+ delegationId: {
35
+ type: string;
36
+ description: string;
37
+ };
38
+ status: {
39
+ type: string;
40
+ enum: string[];
41
+ description: string;
42
+ };
43
+ };
44
+ required: string[];
45
+ };
46
+ execute(_toolCallId: string, params: Record<string, unknown>): Promise<{
47
+ content: {
48
+ type: string;
49
+ text: string;
50
+ }[];
51
+ isError: boolean;
52
+ } | {
53
+ content: {
54
+ type: string;
55
+ text: string;
56
+ }[];
57
+ isError?: undefined;
58
+ }>;
59
+ };
60
+ //# sourceMappingURL=jessie-delegate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jessie-delegate.d.ts","sourceRoot":"","sources":["../../src/tools/jessie-delegate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAMlE,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,MAAM,GAAG,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAuCA,MAAM,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;;EAmGrE"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * jessie_delegate — Task delegation to fleet agents
3
+ *
4
+ * Create, update, list, or close task delegations.
5
+ * Writes memory on create/close, dispatches via fleet-bus if available.
6
+ *
7
+ * Called by: Jessie (when Greg assigns work or fleet coordination requires it)
8
+ */
9
+ import { writeMemory } from '../memory/jessie-memory.js';
10
+ const VALID_AGENTS = ['sam', 'nole', 'grillo', 'noah', 'mighty-mark'];
11
+ export function createDelegateTool(store, getFleetBus) {
12
+ return {
13
+ name: 'jessie_delegate',
14
+ description: 'Create, update, list, or close task delegations to fleet agents. Persists to decision store and writes memory files.',
15
+ parameters: {
16
+ type: 'object',
17
+ properties: {
18
+ action: {
19
+ type: 'string',
20
+ enum: ['create', 'update', 'list', 'close'],
21
+ description: 'Delegation action',
22
+ },
23
+ targetAgent: {
24
+ type: 'string',
25
+ description: 'Agent to delegate to (create only): sam, nole, grillo, noah, mighty-mark',
26
+ },
27
+ description: {
28
+ type: 'string',
29
+ description: 'Task description (create only)',
30
+ },
31
+ priority: {
32
+ type: 'string',
33
+ enum: ['critical', 'high', 'normal', 'low'],
34
+ description: 'Task priority (create only). Defaults to "normal".',
35
+ },
36
+ delegationId: {
37
+ type: 'string',
38
+ description: 'Delegation ID (update/close only)',
39
+ },
40
+ status: {
41
+ type: 'string',
42
+ enum: ['acknowledged', 'in-progress', 'blocked', 'complete'],
43
+ description: 'New status (update only)',
44
+ },
45
+ },
46
+ required: ['action'],
47
+ },
48
+ async execute(_toolCallId, params) {
49
+ try {
50
+ const action = params.action;
51
+ switch (action) {
52
+ case 'create': {
53
+ const target = params.targetAgent;
54
+ const desc = params.description;
55
+ if (!target || !desc) {
56
+ return { content: [{ type: 'text', text: 'Error: targetAgent and description are required for create' }], isError: true };
57
+ }
58
+ if (!VALID_AGENTS.includes(target)) {
59
+ return { content: [{ type: 'text', text: `Error: targetAgent must be one of: ${VALID_AGENTS.join(', ')}` }], isError: true };
60
+ }
61
+ const priority = params.priority || 'normal';
62
+ let dispatched = false;
63
+ const bus = getFleetBus();
64
+ if (bus) {
65
+ try {
66
+ await bus.send({ method: 'task/assign', to: target, payload: { description: desc, priority } });
67
+ dispatched = true;
68
+ }
69
+ catch { /* fleet-bus dispatch failed, continue */ }
70
+ }
71
+ const delegation = store.addDelegation({
72
+ timestamp: new Date().toISOString(),
73
+ targetAgent: target,
74
+ description: desc,
75
+ priority,
76
+ status: 'pending',
77
+ fleetBusDispatched: dispatched,
78
+ });
79
+ await writeMemory({
80
+ type: 'delegation',
81
+ tags: ['commander', 'delegation', target],
82
+ date: new Date().toISOString().split('T')[0],
83
+ metadata: { delegationId: delegation.id, targetAgent: target, priority },
84
+ content: `# Delegation: ${delegation.id}\n\n**Target**: ${target}\n**Priority**: ${priority}\n**Description**: ${desc}\n**Fleet-bus dispatched**: ${dispatched}`,
85
+ });
86
+ return { content: [{ type: 'text', text: JSON.stringify(delegation, null, 2) }] };
87
+ }
88
+ case 'update': {
89
+ const id = params.delegationId;
90
+ const status = params.status;
91
+ if (!id || !status) {
92
+ return { content: [{ type: 'text', text: 'Error: delegationId and status are required for update' }], isError: true };
93
+ }
94
+ const updated = store.updateDelegation(id, status);
95
+ if (!updated) {
96
+ return { content: [{ type: 'text', text: `Error: delegation ${id} not found` }], isError: true };
97
+ }
98
+ return { content: [{ type: 'text', text: JSON.stringify(updated, null, 2) }] };
99
+ }
100
+ case 'close': {
101
+ const closeId = params.delegationId;
102
+ if (!closeId) {
103
+ return { content: [{ type: 'text', text: 'Error: delegationId is required for close' }], isError: true };
104
+ }
105
+ const closed = store.closeDelegation(closeId);
106
+ if (!closed) {
107
+ return { content: [{ type: 'text', text: `Error: delegation ${closeId} not found` }], isError: true };
108
+ }
109
+ await writeMemory({
110
+ type: 'delegation-closed',
111
+ tags: ['commander', 'delegation', 'closed', closed.targetAgent],
112
+ date: new Date().toISOString().split('T')[0],
113
+ metadata: { delegationId: closed.id, targetAgent: closed.targetAgent },
114
+ content: `# Delegation Closed: ${closed.id}\n\n**Target**: ${closed.targetAgent}\n**Description**: ${closed.description}\n**Status**: complete`,
115
+ });
116
+ return { content: [{ type: 'text', text: JSON.stringify(closed, null, 2) }] };
117
+ }
118
+ case 'list': {
119
+ const active = store.getActiveDelegations();
120
+ return { content: [{ type: 'text', text: JSON.stringify({ active, count: active.length }, null, 2) }] };
121
+ }
122
+ default:
123
+ return { content: [{ type: 'text', text: `Error: unknown action "${action}"` }], isError: true };
124
+ }
125
+ }
126
+ catch (err) {
127
+ return {
128
+ content: [{ type: 'text', text: `jessie_delegate error: ${err instanceof Error ? err.message : String(err)}` }],
129
+ isError: true,
130
+ };
131
+ }
132
+ },
133
+ };
134
+ }
135
+ //# sourceMappingURL=jessie-delegate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jessie-delegate.js","sourceRoot":"","sources":["../../src/tools/jessie-delegate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * jessie_report — Generate Commander reports
3
+ *
4
+ * Produces formatted reports for Greg: fleet summaries,
5
+ * decision histories, delegation logs, escalation records.
6
+ *
7
+ * Called by: Greg, Jessie (weekly summary)
8
+ */
9
+ import type { DecisionStore } from '../command/decision-store.js';
10
+ import type { FleetBusState } from '../command/types.js';
11
+ export declare function createReportTool(store: DecisionStore, getFleetBusStatus: () => FleetBusState): {
12
+ name: string;
13
+ description: string;
14
+ parameters: {
15
+ type: "object";
16
+ properties: {
17
+ type: {
18
+ type: string;
19
+ enum: string[];
20
+ description: string;
21
+ };
22
+ };
23
+ required: string[];
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-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jessie-report.d.ts","sourceRoot":"","sources":["../../src/tools/jessie-report.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,qBAAqB,CAAC;AAErE,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,aAAa,EACpB,iBAAiB,EAAE,MAAM,aAAa;;;;;;;;;;;;;;yBAiBT,MAAM,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;;EAuIrE"}
@@ -0,0 +1,149 @@
1
+ /**
2
+ * jessie_report — Generate Commander reports
3
+ *
4
+ * Produces formatted reports for Greg: fleet summaries,
5
+ * decision histories, delegation logs, escalation records.
6
+ *
7
+ * Called by: Greg, Jessie (weekly summary)
8
+ */
9
+ export function createReportTool(store, getFleetBusStatus) {
10
+ return {
11
+ name: 'jessie_report',
12
+ description: 'Generate Commander reports — fleet summaries, decision histories, delegation logs, escalation records.',
13
+ parameters: {
14
+ type: 'object',
15
+ properties: {
16
+ type: {
17
+ type: 'string',
18
+ enum: ['fleet-summary', 'decisions', 'delegations', 'escalations'],
19
+ description: 'Report type',
20
+ },
21
+ },
22
+ required: ['type'],
23
+ },
24
+ async execute(_toolCallId, params) {
25
+ try {
26
+ const reportType = params.type;
27
+ switch (reportType) {
28
+ case 'fleet-summary': {
29
+ const summary = store.getSummary();
30
+ const briefing = store.getLatestBriefing();
31
+ const active = store.getActiveDelegations();
32
+ const report = {
33
+ report: 'Fleet Commander Summary',
34
+ timestamp: new Date().toISOString(),
35
+ overview: {
36
+ fleetBus: getFleetBusStatus(),
37
+ totalDecisions: summary.totalVetoes + summary.totalApprovals,
38
+ vetoTrend: summary.vetoTrend,
39
+ activeDelegations: active.length,
40
+ lastBriefing: summary.lastBriefing ?? 'none',
41
+ },
42
+ activeDelegations: active.map(d => ({
43
+ id: d.id,
44
+ target: d.targetAgent,
45
+ description: d.description,
46
+ priority: d.priority,
47
+ status: d.status,
48
+ })),
49
+ decisionSummary: {
50
+ vetoes: summary.totalVetoes,
51
+ approvals: summary.totalApprovals,
52
+ trend: summary.vetoTrend,
53
+ },
54
+ lastFleetStatus: briefing?.overallStatus ?? 'unknown',
55
+ };
56
+ return { content: [{ type: 'text', text: JSON.stringify(report, null, 2) }] };
57
+ }
58
+ case 'decisions': {
59
+ const vetoes = store.getVetoes(20);
60
+ const approvals = store.getApprovals(20);
61
+ const report = {
62
+ report: 'Commander Decision History',
63
+ timestamp: new Date().toISOString(),
64
+ vetoes: vetoes.map(v => ({
65
+ id: v.id,
66
+ date: v.timestamp,
67
+ target: v.targetAgent,
68
+ proposal: v.proposalId,
69
+ reasoning: v.reasoning,
70
+ delivered: v.fleetBusDelivered,
71
+ memoryWritten: v.memoryFileWritten,
72
+ })),
73
+ approvals: approvals.map(a => ({
74
+ id: a.id,
75
+ date: a.timestamp,
76
+ target: a.targetAgent,
77
+ proposal: a.proposalId,
78
+ reasoning: a.reasoning,
79
+ })),
80
+ totals: {
81
+ vetoes: vetoes.length,
82
+ approvals: approvals.length,
83
+ },
84
+ };
85
+ return { content: [{ type: 'text', text: JSON.stringify(report, null, 2) }] };
86
+ }
87
+ case 'delegations': {
88
+ const all = store.getAllDelegations(30);
89
+ const active = store.getActiveDelegations();
90
+ const report = {
91
+ report: 'Commander Delegation Log',
92
+ timestamp: new Date().toISOString(),
93
+ active: active.map(d => ({
94
+ id: d.id,
95
+ target: d.targetAgent,
96
+ description: d.description,
97
+ priority: d.priority,
98
+ status: d.status,
99
+ created: d.timestamp,
100
+ lastUpdate: d.lastUpdate,
101
+ })),
102
+ recent: all.map(d => ({
103
+ id: d.id,
104
+ target: d.targetAgent,
105
+ description: d.description,
106
+ status: d.status,
107
+ created: d.timestamp,
108
+ completed: d.completedAt,
109
+ })),
110
+ totals: {
111
+ active: active.length,
112
+ total: all.length,
113
+ },
114
+ };
115
+ return { content: [{ type: 'text', text: JSON.stringify(report, null, 2) }] };
116
+ }
117
+ case 'escalations': {
118
+ const report = {
119
+ report: 'Commander Escalation Log',
120
+ timestamp: new Date().toISOString(),
121
+ note: 'Escalation tracking is part of the decision store. Use jessie_decide action: "history" for decisions that included escalations.',
122
+ escalationPolicy: {
123
+ escalateTo: 'Greg',
124
+ triggers: [
125
+ 'Regulatory decisions',
126
+ 'Legal questions',
127
+ 'Patent strategy',
128
+ 'Financial commitments above fleet budget',
129
+ 'Insufficient context for confident recommendation',
130
+ ],
131
+ format: 'Situation → Assessment → Recommended option → Risk of doing nothing',
132
+ },
133
+ };
134
+ return { content: [{ type: 'text', text: JSON.stringify(report, null, 2) }] };
135
+ }
136
+ default:
137
+ return { content: [{ type: 'text', text: `Error: unknown report type "${reportType}"` }], isError: true };
138
+ }
139
+ }
140
+ catch (err) {
141
+ return {
142
+ content: [{ type: 'text', text: `jessie_report error: ${err instanceof Error ? err.message : String(err)}` }],
143
+ isError: true,
144
+ };
145
+ }
146
+ },
147
+ };
148
+ }
149
+ //# sourceMappingURL=jessie-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jessie-report.js","sourceRoot":"","sources":["../../src/tools/jessie-report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * jessie_status — Report Jessie's current state
3
+ *
4
+ * Called by: Mighty Mark (health checks), Greg, Sam (before escalation)
5
+ */
6
+ import type { DecisionStore } from '../command/decision-store.js';
7
+ import type { FleetBusState } from '../command/types.js';
8
+ export declare function createStatusTool(store: DecisionStore, getFleetBusStatus: () => FleetBusState): {
9
+ name: string;
10
+ description: string;
11
+ parameters: {
12
+ type: "object";
13
+ properties: {};
14
+ };
15
+ execute(_toolCallId: string, _params: Record<string, unknown>): Promise<{
16
+ content: {
17
+ type: string;
18
+ text: string;
19
+ }[];
20
+ isError?: undefined;
21
+ } | {
22
+ content: {
23
+ type: string;
24
+ text: string;
25
+ }[];
26
+ isError: boolean;
27
+ }>;
28
+ };
29
+ //# sourceMappingURL=jessie-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jessie-status.d.ts","sourceRoot":"","sources":["../../src/tools/jessie-status.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAsB,MAAM,qBAAqB,CAAC;AAG7E,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,aAAa,EACpB,iBAAiB,EAAE,MAAM,aAAa;;;;;;;yBAOT,MAAM,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;;EA2CtE"}