heyio 3.1.3 → 3.1.5
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/dist/api/routes/inbox.d.ts.map +1 -1
- package/dist/api/routes/inbox.js +52 -1
- package/dist/api/routes/inbox.js.map +1 -1
- package/dist/api/routes/squads.d.ts.map +1 -1
- package/dist/api/routes/squads.js +106 -2
- package/dist/api/routes/squads.js.map +1 -1
- package/dist/api/routes/wiki.js +6 -1
- package/dist/api/routes/wiki.js.map +1 -1
- package/dist/copilot/orchestrator.d.ts +1 -1
- package/dist/copilot/orchestrator.d.ts.map +1 -1
- package/dist/copilot/orchestrator.js +27 -0
- package/dist/copilot/orchestrator.js.map +1 -1
- package/dist/models/token-tracker.d.ts +1 -0
- package/dist/models/token-tracker.d.ts.map +1 -1
- package/dist/models/token-tracker.js +11 -10
- package/dist/models/token-tracker.js.map +1 -1
- package/dist/squad/agent.d.ts +4 -0
- package/dist/squad/agent.d.ts.map +1 -1
- package/dist/squad/agent.js +59 -1
- package/dist/squad/agent.js.map +1 -1
- package/dist/squad/execution/instance.d.ts +3 -0
- package/dist/squad/execution/instance.d.ts.map +1 -1
- package/dist/squad/execution/instance.js +3 -2
- package/dist/squad/execution/instance.js.map +1 -1
- package/dist/squad/execution/meeting.d.ts.map +1 -1
- package/dist/squad/execution/meeting.js +6 -2
- package/dist/squad/execution/meeting.js.map +1 -1
- package/dist/squad/execution/tasks.d.ts.map +1 -1
- package/dist/squad/execution/tasks.js +20 -4
- package/dist/squad/execution/tasks.js.map +1 -1
- package/dist/squad/manager.d.ts.map +1 -1
- package/dist/squad/manager.js +3 -2
- package/dist/squad/manager.js.map +1 -1
- package/dist/squad/model-selector.d.ts +29 -0
- package/dist/squad/model-selector.d.ts.map +1 -0
- package/dist/squad/model-selector.js +64 -0
- package/dist/squad/model-selector.js.map +1 -0
- package/dist/store/activity.js +8 -0
- package/dist/store/activity.js.map +1 -1
- package/dist/store/db.d.ts.map +1 -1
- package/dist/store/db.js +7 -0
- package/dist/store/db.js.map +1 -1
- package/dist/store/inbox.d.ts +15 -1
- package/dist/store/inbox.d.ts.map +1 -1
- package/dist/store/inbox.js +47 -7
- package/dist/store/inbox.js.map +1 -1
- package/dist/wiki/index.d.ts +1 -1
- package/dist/wiki/index.d.ts.map +1 -1
- package/dist/wiki/index.js +1 -1
- package/dist/wiki/index.js.map +1 -1
- package/dist/wiki/store.d.ts +12 -0
- package/dist/wiki/store.d.ts.map +1 -1
- package/dist/wiki/store.js +33 -0
- package/dist/wiki/store.js.map +1 -1
- package/node_modules/@io/shared/package.json +1 -1
- package/package.json +1 -1
- package/public/assets/index-B6pyD_4A.css +9 -0
- package/public/assets/index-C4oirMTi.js +505 -0
- package/public/assets/index-C4oirMTi.js.map +1 -0
- package/public/index.html +2 -2
- package/public/assets/index-CMcpQavD.css +0 -1
- package/public/assets/index-DsYVZ_Bi.js +0 -478
- package/public/assets/index-DsYVZ_Bi.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../../src/api/routes/inbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../../src/api/routes/inbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAcjC,wBAAgB,WAAW,IAAI,MAAM,CAyIpC"}
|
package/dist/api/routes/inbox.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Router } from 'express';
|
|
2
|
-
import { getInboxEntry, getUnreadCount, listInboxEntries, markInboxRead, resolveInboxEntry, } from '../../store/inbox.js';
|
|
2
|
+
import { deleteInboxEntries, deleteInboxEntry, getInboxEntry, getUnreadCount, listInboxEntries, markInboxRead, markInboxReadBulk, resolveInboxEntry, } from '../../store/inbox.js';
|
|
3
3
|
export function inboxRouter() {
|
|
4
4
|
const router = Router();
|
|
5
5
|
/**
|
|
@@ -64,6 +64,57 @@ export function inboxRouter() {
|
|
|
64
64
|
res.status(500).json({ error: 'Failed to mark entry as read' });
|
|
65
65
|
}
|
|
66
66
|
});
|
|
67
|
+
/**
|
|
68
|
+
* POST /api/inbox/bulk/read
|
|
69
|
+
* Mark multiple entries as read.
|
|
70
|
+
* Body: { ids: string[] }
|
|
71
|
+
*/
|
|
72
|
+
router.post('/inbox/bulk/read', async (req, res) => {
|
|
73
|
+
try {
|
|
74
|
+
const { ids } = req.body;
|
|
75
|
+
if (!ids || !Array.isArray(ids)) {
|
|
76
|
+
res.status(400).json({ error: 'ids array is required' });
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
await markInboxReadBulk(ids);
|
|
80
|
+
res.json({ status: 'ok' });
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
res.status(500).json({ error: 'Failed to mark entries as read' });
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
/**
|
|
87
|
+
* POST /api/inbox/bulk/delete
|
|
88
|
+
* Delete multiple entries.
|
|
89
|
+
* Body: { ids: string[] }
|
|
90
|
+
*/
|
|
91
|
+
router.post('/inbox/bulk/delete', async (req, res) => {
|
|
92
|
+
try {
|
|
93
|
+
const { ids } = req.body;
|
|
94
|
+
if (!ids || !Array.isArray(ids)) {
|
|
95
|
+
res.status(400).json({ error: 'ids array is required' });
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
await deleteInboxEntries(ids);
|
|
99
|
+
res.json({ status: 'ok' });
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
res.status(500).json({ error: 'Failed to delete entries' });
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
/**
|
|
106
|
+
* DELETE /api/inbox/:id
|
|
107
|
+
* Delete a single entry.
|
|
108
|
+
*/
|
|
109
|
+
router.delete('/inbox/:id', async (req, res) => {
|
|
110
|
+
try {
|
|
111
|
+
await deleteInboxEntry(req.params.id);
|
|
112
|
+
res.json({ status: 'ok' });
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
res.status(500).json({ error: 'Failed to delete entry' });
|
|
116
|
+
}
|
|
117
|
+
});
|
|
67
118
|
/**
|
|
68
119
|
* POST /api/inbox/:id/respond
|
|
69
120
|
* Respond to an inbox question. Resolves any blocking squad.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../../src/api/routes/inbox.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../../src/api/routes/inbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"squads.d.ts","sourceRoot":"","sources":["../../../src/api/routes/squads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"squads.d.ts","sourceRoot":"","sources":["../../../src/api/routes/squads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAUjC,wBAAgB,YAAY,IAAI,MAAM,CAgQrC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Router } from 'express';
|
|
2
|
-
import { getSquadInstances } from '../../squad/execution/instance.js';
|
|
2
|
+
import { getInstance, getSquadInstances } from '../../squad/execution/instance.js';
|
|
3
3
|
import { runInstance } from '../../squad/execution/runner.js';
|
|
4
4
|
import { getSquadByName, getSquadMembers, listSquads } from '../../squad/manager.js';
|
|
5
|
+
import { getDatabase } from '../../store/db.js';
|
|
5
6
|
function isActiveInstance(status) {
|
|
6
7
|
return status !== 'complete' && status !== 'failed';
|
|
7
8
|
}
|
|
@@ -13,11 +14,28 @@ export function squadsRouter() {
|
|
|
13
14
|
*/
|
|
14
15
|
router.get('/squads', async (_req, res) => {
|
|
15
16
|
try {
|
|
17
|
+
const db = getDatabase();
|
|
16
18
|
const squads = await listSquads();
|
|
17
19
|
const results = await Promise.all(squads.map(async (s) => {
|
|
18
20
|
const members = await getSquadMembers(s.id);
|
|
19
21
|
const instances = getSquadInstances(s.id);
|
|
20
22
|
const activeInstances = instances.filter((i) => isActiveInstance(i.status)).length;
|
|
23
|
+
// Fetch last 5 instances (work items/prompts) for this squad
|
|
24
|
+
const instanceResult = await db.execute({
|
|
25
|
+
sql: `SELECT id, status, objective, issue_ref, created_at
|
|
26
|
+
FROM squad_instances
|
|
27
|
+
WHERE squad_id = ?
|
|
28
|
+
ORDER BY created_at DESC
|
|
29
|
+
LIMIT 5`,
|
|
30
|
+
args: [s.id],
|
|
31
|
+
});
|
|
32
|
+
const recentActivity = instanceResult.rows.map((row) => ({
|
|
33
|
+
id: row.id,
|
|
34
|
+
status: row.status,
|
|
35
|
+
objective: row.objective,
|
|
36
|
+
issueRef: row.issue_ref,
|
|
37
|
+
timestamp: row.created_at,
|
|
38
|
+
}));
|
|
21
39
|
return {
|
|
22
40
|
id: s.id,
|
|
23
41
|
name: s.name,
|
|
@@ -30,6 +48,7 @@ export function squadsRouter() {
|
|
|
30
48
|
activeInstances,
|
|
31
49
|
totalInstances: instances.length,
|
|
32
50
|
createdAt: s.createdAt.toISOString(),
|
|
51
|
+
recentActivity,
|
|
33
52
|
};
|
|
34
53
|
}));
|
|
35
54
|
res.json({ squads: results });
|
|
@@ -54,6 +73,9 @@ export function squadsRouter() {
|
|
|
54
73
|
const activeInstances = instances.filter((inst) => isActiveInstance(inst.status));
|
|
55
74
|
// Build a map of role -> current task (from active instances)
|
|
56
75
|
const currentTasks = new Map();
|
|
76
|
+
// Determine if any active instance is in meeting/planning phase
|
|
77
|
+
const meetingInstance = activeInstances.find((i) => i.status === 'meeting');
|
|
78
|
+
const planningInstance = activeInstances.find((i) => i.status === 'planning');
|
|
57
79
|
for (const inst of activeInstances) {
|
|
58
80
|
for (const task of inst.tasks) {
|
|
59
81
|
if (task.status === 'in_progress') {
|
|
@@ -75,6 +97,11 @@ export function squadsRouter() {
|
|
|
75
97
|
},
|
|
76
98
|
members: members.map((m) => {
|
|
77
99
|
const currentTask = currentTasks.get(m.roleName) ?? null;
|
|
100
|
+
const phaseStatus = meetingInstance
|
|
101
|
+
? 'in meeting'
|
|
102
|
+
: planningInstance
|
|
103
|
+
? 'planning'
|
|
104
|
+
: null;
|
|
78
105
|
return {
|
|
79
106
|
id: m.id,
|
|
80
107
|
displayName: m.displayName,
|
|
@@ -83,7 +110,7 @@ export function squadsRouter() {
|
|
|
83
110
|
persona: m.persona,
|
|
84
111
|
veto: m.isVetoMember,
|
|
85
112
|
tools: m.toolsAllowed,
|
|
86
|
-
status: currentTask ? 'working' : 'idle',
|
|
113
|
+
status: currentTask ? 'working' : phaseStatus ?? 'idle',
|
|
87
114
|
currentTask,
|
|
88
115
|
};
|
|
89
116
|
}),
|
|
@@ -132,6 +159,83 @@ export function squadsRouter() {
|
|
|
132
159
|
res.status(500).json({ error: 'Failed to start instance' });
|
|
133
160
|
}
|
|
134
161
|
});
|
|
162
|
+
/**
|
|
163
|
+
* GET /api/squads/:name/instances/:instanceId
|
|
164
|
+
* Get detailed instance info with agent activity.
|
|
165
|
+
*/
|
|
166
|
+
router.get('/squads/:name/instances/:instanceId', async (req, res) => {
|
|
167
|
+
try {
|
|
168
|
+
const squad = await getSquadByName(req.params.name);
|
|
169
|
+
if (!squad) {
|
|
170
|
+
res.status(404).json({ error: `Squad '${req.params.name}' not found` });
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
const instance = getInstance(req.params.instanceId);
|
|
174
|
+
if (!instance || instance.squadId !== squad.id) {
|
|
175
|
+
res.status(404).json({ error: 'Instance not found' });
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
const members = await getSquadMembers(squad.id);
|
|
179
|
+
const db = getDatabase();
|
|
180
|
+
// Fetch agent activity for this instance
|
|
181
|
+
const activityResult = await db.execute({
|
|
182
|
+
sql: `SELECT id, agent_role, activity_type, content, model_used, tokens_used, timestamp
|
|
183
|
+
FROM agent_activity
|
|
184
|
+
WHERE instance_id = ?
|
|
185
|
+
ORDER BY timestamp ASC`,
|
|
186
|
+
args: [instance.id],
|
|
187
|
+
});
|
|
188
|
+
const activity = activityResult.rows.map((row) => ({
|
|
189
|
+
id: row.id,
|
|
190
|
+
agent: row.agent_role,
|
|
191
|
+
type: row.activity_type,
|
|
192
|
+
content: row.content,
|
|
193
|
+
model: row.model_used,
|
|
194
|
+
tokensUsed: row.tokens_used,
|
|
195
|
+
timestamp: row.timestamp,
|
|
196
|
+
}));
|
|
197
|
+
// Build member status from tasks
|
|
198
|
+
const memberDetails = members.map((m) => {
|
|
199
|
+
const task = instance.tasks.find((t) => t.assignedTo === m.roleName && t.status === 'in_progress');
|
|
200
|
+
// During meeting/planning phases, all agents are participating
|
|
201
|
+
const phaseStatus = instance.status === 'meeting'
|
|
202
|
+
? 'in meeting'
|
|
203
|
+
: instance.status === 'planning'
|
|
204
|
+
? 'planning'
|
|
205
|
+
: null;
|
|
206
|
+
return {
|
|
207
|
+
id: m.id,
|
|
208
|
+
displayName: m.displayName,
|
|
209
|
+
role: m.roleName,
|
|
210
|
+
roleName: m.roleName,
|
|
211
|
+
status: task ? 'working' : phaseStatus ?? 'idle',
|
|
212
|
+
currentTask: task?.description ?? null,
|
|
213
|
+
};
|
|
214
|
+
});
|
|
215
|
+
res.json({
|
|
216
|
+
instance: {
|
|
217
|
+
id: instance.id,
|
|
218
|
+
status: instance.status,
|
|
219
|
+
branch: instance.branch,
|
|
220
|
+
issueRef: instance.issueRef,
|
|
221
|
+
taskCount: instance.tasks.length,
|
|
222
|
+
tasksComplete: instance.tasks.filter((t) => t.status === 'done').length,
|
|
223
|
+
tasks: instance.tasks.map((t) => ({
|
|
224
|
+
id: t.id,
|
|
225
|
+
description: t.description,
|
|
226
|
+
assignedTo: t.assignedTo,
|
|
227
|
+
status: t.status,
|
|
228
|
+
})),
|
|
229
|
+
meetingLog: instance.meetingLog,
|
|
230
|
+
},
|
|
231
|
+
members: memberDetails,
|
|
232
|
+
activity,
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
catch (err) {
|
|
236
|
+
res.status(500).json({ error: 'Failed to get instance detail' });
|
|
237
|
+
}
|
|
238
|
+
});
|
|
135
239
|
return router;
|
|
136
240
|
}
|
|
137
241
|
//# sourceMappingURL=squads.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"squads.js","sourceRoot":"","sources":["../../../src/api/routes/squads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"squads.js","sourceRoot":"","sources":["../../../src/api/routes/squads.ts"],"names":[],"mappings":"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"}
|
package/dist/api/routes/wiki.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { Router } from 'express';
|
|
2
|
-
import { deleteWikiPage, listWikiPages, readWikiPage, searchWiki, writeWikiPage } from '../../wiki/index.js';
|
|
2
|
+
import { deleteWikiPage, listAllWikiPages, listWikiPages, readWikiPage, searchWiki, writeWikiPage } from '../../wiki/index.js';
|
|
3
3
|
export const wikiRouter = Router();
|
|
4
|
+
// List ALL pages across all scopes
|
|
5
|
+
wikiRouter.get('/all', (_req, res) => {
|
|
6
|
+
const pages = listAllWikiPages();
|
|
7
|
+
res.json({ pages });
|
|
8
|
+
});
|
|
4
9
|
// List pages in a scope
|
|
5
10
|
wikiRouter.get('/:scope', (req, res) => {
|
|
6
11
|
const { scope } = req.params;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wiki.js","sourceRoot":"","sources":["../../../src/api/routes/wiki.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"wiki.js","sourceRoot":"","sources":["../../../src/api/routes/wiki.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type IOConfig } from '../config.js';
|
|
2
2
|
export declare function initOrchestrator(config: IOConfig): Promise<void>;
|
|
3
3
|
export declare function sendMessage(prompt: string, source: 'tui' | 'telegram' | 'web', onDelta: (accumulated: string, done: boolean) => void): Promise<string>;
|
|
4
4
|
export declare function destroyOrchestrator(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/copilot/orchestrator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/copilot/orchestrator.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAgFzD,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAwCtE;AAgBD,wBAAgB,WAAW,CAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,KAAK,GAAG,UAAU,GAAG,KAAK,EAClC,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,GACnD,OAAO,CAAC,MAAM,CAAC,CAKjB;AA4FD,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGzD"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { approveAll } from '@github/copilot-sdk';
|
|
2
|
+
import { loadConfig } from '../config.js';
|
|
2
3
|
import { createChildLogger } from '../logging/logger.js';
|
|
3
4
|
import { recordTokenUsage } from '../models/token-tracker.js';
|
|
4
5
|
import { getActiveSkillsContent } from '../skills/index.js';
|
|
@@ -11,6 +12,7 @@ import { createOrchestratorTools } from './tools.js';
|
|
|
11
12
|
let logger;
|
|
12
13
|
let session;
|
|
13
14
|
let sessionId;
|
|
15
|
+
let currentModel = '';
|
|
14
16
|
const messageQueue = [];
|
|
15
17
|
let processing = false;
|
|
16
18
|
const SYSTEM_MESSAGE_BASE = `You are IO, an AI orchestrator daemon. You help users manage their software projects through intelligent conversation and by coordinating specialized agent squads.
|
|
@@ -58,6 +60,7 @@ async function buildSystemMessage() {
|
|
|
58
60
|
export async function initOrchestrator(config) {
|
|
59
61
|
logger = createChildLogger('orchestrator');
|
|
60
62
|
const client = await getClient();
|
|
63
|
+
currentModel = config.defaultModel;
|
|
61
64
|
const systemMessage = await buildSystemMessage();
|
|
62
65
|
const sessionOptions = {
|
|
63
66
|
model: config.defaultModel,
|
|
@@ -132,6 +135,30 @@ async function processMessage(msg) {
|
|
|
132
135
|
if (!session) {
|
|
133
136
|
throw new Error('Orchestrator session not initialized');
|
|
134
137
|
}
|
|
138
|
+
// Check if the configured model has changed — if so, recreate the session
|
|
139
|
+
const freshConfig = loadConfig();
|
|
140
|
+
if (freshConfig.defaultModel !== currentModel) {
|
|
141
|
+
logger.info({ from: currentModel, to: freshConfig.defaultModel }, 'Default model changed, recreating orchestrator session');
|
|
142
|
+
currentModel = freshConfig.defaultModel;
|
|
143
|
+
const client = await getClient();
|
|
144
|
+
const systemMessage = await buildSystemMessage();
|
|
145
|
+
session = await client.createSession({
|
|
146
|
+
model: currentModel,
|
|
147
|
+
streaming: true,
|
|
148
|
+
tools: createOrchestratorTools(),
|
|
149
|
+
systemMessage: { mode: 'replace', content: systemMessage },
|
|
150
|
+
onPermissionRequest: approveAll,
|
|
151
|
+
infiniteSessions: {
|
|
152
|
+
enabled: true,
|
|
153
|
+
backgroundCompactionThreshold: 0.8,
|
|
154
|
+
bufferExhaustionThreshold: 0.95,
|
|
155
|
+
},
|
|
156
|
+
});
|
|
157
|
+
sessionId = session.sessionId;
|
|
158
|
+
subscribeToUsage(session);
|
|
159
|
+
await saveSessionId(sessionId);
|
|
160
|
+
logger.info({ sessionId, model: currentModel }, 'Orchestrator session recreated with new model');
|
|
161
|
+
}
|
|
135
162
|
await appendConversationMessage({
|
|
136
163
|
role: 'user',
|
|
137
164
|
content: msg.prompt,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/copilot/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/copilot/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-tracker.d.ts","sourceRoot":"","sources":["../../src/models/token-tracker.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB9E;AAwBD;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,CAAC,EAAE;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC;IACX,OAAO,EAAE,KAAK,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KACzB,CAAC,CAAC;IACH,MAAM,EAAE;QACP,gBAAgB,EAAE,MAAM,CAAC;QACzB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;KAClB,CAAC;CACF,CAAC,
|
|
1
|
+
{"version":3,"file":"token-tracker.d.ts","sourceRoot":"","sources":["../../src/models/token-tracker.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB9E;AAwBD;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,CAAC,EAAE;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC;IACX,OAAO,EAAE,KAAK,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KACzB,CAAC,CAAC;IACH,MAAM,EAAE;QACP,gBAAgB,EAAE,MAAM,CAAC;QACzB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;KAClB,CAAC;CACF,CAAC,CA8DD"}
|
|
@@ -49,29 +49,29 @@ export async function queryUsage(filters) {
|
|
|
49
49
|
const conditions = [];
|
|
50
50
|
const args = [];
|
|
51
51
|
if (filters?.squadId) {
|
|
52
|
-
conditions.push('squad_id = ?');
|
|
52
|
+
conditions.push('t.squad_id = ?');
|
|
53
53
|
args.push(filters.squadId);
|
|
54
54
|
}
|
|
55
55
|
if (filters?.agentRole) {
|
|
56
|
-
conditions.push('agent_role = ?');
|
|
56
|
+
conditions.push('t.agent_role = ?');
|
|
57
57
|
args.push(filters.agentRole);
|
|
58
58
|
}
|
|
59
59
|
if (filters?.model) {
|
|
60
|
-
conditions.push('model = ?');
|
|
60
|
+
conditions.push('t.model = ?');
|
|
61
61
|
args.push(filters.model);
|
|
62
62
|
}
|
|
63
63
|
if (filters?.since) {
|
|
64
|
-
conditions.push('timestamp >= ?');
|
|
64
|
+
conditions.push('t.timestamp >= ?');
|
|
65
65
|
args.push(filters.since);
|
|
66
66
|
}
|
|
67
67
|
if (filters?.until) {
|
|
68
|
-
conditions.push('timestamp <= ?');
|
|
68
|
+
conditions.push('t.timestamp <= ?');
|
|
69
69
|
args.push(filters.until);
|
|
70
70
|
}
|
|
71
71
|
const where = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
|
|
72
72
|
const result = await db.execute({
|
|
73
|
-
sql: `SELECT model, input_tokens, output_tokens, estimated_cost_usd, timestamp, squad_id, agent_role
|
|
74
|
-
FROM token_usage ${where} ORDER BY timestamp DESC LIMIT 500`,
|
|
73
|
+
sql: `SELECT t.model, t.input_tokens, t.output_tokens, t.estimated_cost_usd, t.timestamp, t.squad_id, t.agent_role, s.name as squad_name
|
|
74
|
+
FROM token_usage t LEFT JOIN squads s ON t.squad_id = s.id ${where} ORDER BY t.timestamp DESC LIMIT 500`,
|
|
75
75
|
args,
|
|
76
76
|
});
|
|
77
77
|
const records = result.rows.map((row) => ({
|
|
@@ -81,13 +81,14 @@ export async function queryUsage(filters) {
|
|
|
81
81
|
estimatedCostUsd: row.estimated_cost_usd,
|
|
82
82
|
timestamp: row.timestamp,
|
|
83
83
|
squadId: row.squad_id,
|
|
84
|
+
squadName: row.squad_name ?? null,
|
|
84
85
|
agentRole: row.agent_role,
|
|
85
86
|
}));
|
|
86
87
|
// Totals
|
|
87
88
|
const totalsResult = await db.execute({
|
|
88
|
-
sql: `SELECT COUNT(*) as cnt, COALESCE(SUM(input_tokens), 0) as total_in,
|
|
89
|
-
COALESCE(SUM(output_tokens), 0) as total_out, COALESCE(SUM(estimated_cost_usd), 0) as total_cost
|
|
90
|
-
FROM token_usage ${where}`,
|
|
89
|
+
sql: `SELECT COUNT(*) as cnt, COALESCE(SUM(t.input_tokens), 0) as total_in,
|
|
90
|
+
COALESCE(SUM(t.output_tokens), 0) as total_out, COALESCE(SUM(t.estimated_cost_usd), 0) as total_cost
|
|
91
|
+
FROM token_usage t ${where}`,
|
|
91
92
|
args,
|
|
92
93
|
});
|
|
93
94
|
const totalsRow = totalsResult.rows[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-tracker.js","sourceRoot":"","sources":["../../src/models/token-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;AAYxD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAwB;IAC9D,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAEzB,wCAAwC;IACxC,IAAI,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACnC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACxB,IAAI,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,EAAE,CAAC,OAAO,CAAC;QAChB,GAAG,EAAE;qCAC8B;QACnC,IAAI,EAAE;YACL,MAAM,CAAC,OAAO,IAAI,IAAI;YACtB,MAAM,CAAC,UAAU,IAAI,IAAI;YACzB,MAAM,CAAC,SAAS,IAAI,IAAI;YACxB,MAAM,CAAC,KAAK;YACZ,MAAM,CAAC,WAAW;YAClB,MAAM,CAAC,YAAY;YACnB,IAAI,IAAI,IAAI;SACZ;KACD,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,YAAY,CAC1B,KAAa,EACb,WAAmB,EACnB,YAAoB;IAEpB,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC;QAC/B,GAAG,EAAE,iFAAiF;QACtF,IAAI,EAAE,CAAC,KAAK,CAAC;KACb,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAE/C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,SAAS,GAAG,CAAE,GAAG,CAAC,iBAA4B,GAAG,SAAS,CAAC,GAAG,WAAW,CAAC;IAChF,MAAM,UAAU,GAAG,CAAE,GAAG,CAAC,kBAA6B,GAAG,SAAS,CAAC,GAAG,YAAY,CAAC;IACnF,OAAO,SAAS,GAAG,UAAU,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAMhC;
|
|
1
|
+
{"version":3,"file":"token-tracker.js","sourceRoot":"","sources":["../../src/models/token-tracker.ts"],"names":[],"mappings":"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"}
|
package/dist/squad/agent.d.ts
CHANGED
|
@@ -37,6 +37,10 @@ export declare class Agent {
|
|
|
37
37
|
init(squadContext?: string): Promise<void>;
|
|
38
38
|
/** Send a message and get a response */
|
|
39
39
|
send(content: string): Promise<string>;
|
|
40
|
+
/** Switch to a different model (reinitializes session) */
|
|
41
|
+
switchModel(newModel: string, squadContext?: string): Promise<void>;
|
|
42
|
+
/** Get the current model */
|
|
43
|
+
getModel(): string;
|
|
40
44
|
/** Destroy the agent's session */
|
|
41
45
|
destroy(): Promise<void>;
|
|
42
46
|
/** Build allowed tools for this agent based on SKILL.md */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/squad/agent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/squad/agent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,WAAW,EAAE,MAAM,YAAY,CAAC;AAc1D,OAAO,EAAE,KAAK,eAAe,EAAuB,MAAM,mBAAmB,CAAC;AAE9E,MAAM,WAAW,WAAW;IAC3B,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACxE;AAED,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CAChB;AAID;;;GAGG;AACH,qBAAa,KAAK;IACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAC,CAA+D;IAChF,OAAO,CAAC,MAAM,CAAC;IACf,OAAO,CAAC,OAAO,CAAuB;gBAE1B,MAAM,EAAE,WAAW;IAa/B,IAAI,MAAM,IAAI,WAAW,CAExB;IAED,6CAA6C;IACvC,IAAI,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiChD,wCAAwC;IAClC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAwB5C,0DAA0D;IACpD,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzE,4BAA4B;IAC5B,QAAQ,IAAI,MAAM;IAIlB,kCAAkC;IAC5B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B,2DAA2D;IAC3D,OAAO,CAAC,UAAU;IAkPlB,OAAO,CAAC,SAAS;CAgBjB"}
|
package/dist/squad/agent.js
CHANGED
|
@@ -3,6 +3,7 @@ import { z } from 'zod';
|
|
|
3
3
|
import { getClient } from '../copilot/client.js';
|
|
4
4
|
import { createChildLogger } from '../logging/logger.js';
|
|
5
5
|
import { recordTokenUsage } from '../models/token-tracker.js';
|
|
6
|
+
import { addInboxEntry } from '../store/inbox.js';
|
|
6
7
|
import { getSquadScopes, listWikiPages, readWikiPage, searchWiki, writeWikiPage, } from '../wiki/index.js';
|
|
7
8
|
import { getEventBus } from './event-bus.js';
|
|
8
9
|
import { compileSystemPrompt } from './skill-parser.js';
|
|
@@ -27,7 +28,7 @@ export class Agent {
|
|
|
27
28
|
this.squadId = config.squadId;
|
|
28
29
|
this.squadName = config.squadName;
|
|
29
30
|
this.instanceId = config.instanceId;
|
|
30
|
-
this.model = config.model ?? 'claude-
|
|
31
|
+
this.model = config.model ?? 'claude-sonnet-4.6';
|
|
31
32
|
this.identity = config.identity;
|
|
32
33
|
this.logger = createChildLogger(`agent:${config.squadName}:${config.identity?.displayName ?? this.role}`);
|
|
33
34
|
}
|
|
@@ -81,6 +82,22 @@ export class Agent {
|
|
|
81
82
|
throw err;
|
|
82
83
|
}
|
|
83
84
|
}
|
|
85
|
+
/** Switch to a different model (reinitializes session) */
|
|
86
|
+
async switchModel(newModel, squadContext) {
|
|
87
|
+
if (this.model === newModel)
|
|
88
|
+
return;
|
|
89
|
+
this.logger.info({ from: this.model, to: newModel }, 'Switching model');
|
|
90
|
+
this.model = newModel;
|
|
91
|
+
if (this.session) {
|
|
92
|
+
await this.session.disconnect().catch(() => { });
|
|
93
|
+
this.session = null;
|
|
94
|
+
}
|
|
95
|
+
await this.init(squadContext);
|
|
96
|
+
}
|
|
97
|
+
/** Get the current model */
|
|
98
|
+
getModel() {
|
|
99
|
+
return this.model;
|
|
100
|
+
}
|
|
84
101
|
/** Destroy the agent's session */
|
|
85
102
|
async destroy() {
|
|
86
103
|
if (this.session) {
|
|
@@ -252,6 +269,47 @@ export class Agent {
|
|
|
252
269
|
};
|
|
253
270
|
},
|
|
254
271
|
}));
|
|
272
|
+
// Inbox tool — always available so agents can deliver work to user
|
|
273
|
+
tools.push(defineTool('add_to_inbox', {
|
|
274
|
+
description: 'Create an inbox entry for the user. Use to deliver completed work, ask a blocking question, or leave an informational note.',
|
|
275
|
+
parameters: z.object({
|
|
276
|
+
kind: z
|
|
277
|
+
.enum(['deliverable', 'question', 'note'])
|
|
278
|
+
.describe('Type: deliverable (work product), question (blocks until user responds), note (informational)'),
|
|
279
|
+
title: z.string().describe('Short title for the inbox entry'),
|
|
280
|
+
content: z.string().describe('Full content/body of the entry (markdown supported)'),
|
|
281
|
+
}),
|
|
282
|
+
handler: async (args) => {
|
|
283
|
+
try {
|
|
284
|
+
const { entry } = await addInboxEntry({
|
|
285
|
+
squadId: this.squadId,
|
|
286
|
+
instanceId: this.instanceId,
|
|
287
|
+
kind: args.kind,
|
|
288
|
+
title: args.title,
|
|
289
|
+
content: args.content,
|
|
290
|
+
});
|
|
291
|
+
this.logger.info({ entryId: entry.id, kind: args.kind }, 'Agent created inbox entry');
|
|
292
|
+
return {
|
|
293
|
+
textResultForLlm: JSON.stringify({
|
|
294
|
+
created: true,
|
|
295
|
+
id: entry.id,
|
|
296
|
+
kind: entry.kind,
|
|
297
|
+
title: entry.title,
|
|
298
|
+
source: `squad:${this.squadName}:${this.role}`,
|
|
299
|
+
}),
|
|
300
|
+
resultType: 'success',
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
catch (err) {
|
|
304
|
+
return {
|
|
305
|
+
textResultForLlm: JSON.stringify({
|
|
306
|
+
error: `Failed to create inbox entry: ${err instanceof Error ? err.message : String(err)}`,
|
|
307
|
+
}),
|
|
308
|
+
resultType: 'success',
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
},
|
|
312
|
+
}));
|
|
255
313
|
return tools;
|
|
256
314
|
}
|
|
257
315
|
emitEvent(type, data) {
|