aimeat 1.34.0 → 1.35.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.
- package/dist/locales/en.json +52 -4
- package/dist/locales/fi.json +52 -4
- package/dist/public/css/views/secretary.css +52 -0
- package/dist/public/js/i18n.js +9 -0
- package/dist/public/js/services/secretary-helpers.js +8 -4
- package/dist/public/js/services/secretary-policy.js +28 -3
- package/dist/public/views/profile/agents/agent-card.js +6 -4
- package/dist/public/views/profile/agents/tab-integration.js +5 -2
- package/dist/public/views/secretary/cards.js +46 -15
- package/dist/public/views/secretary/dashboard.js +68 -2
- package/dist/public/views/secretary.js +208 -40
- package/dist/src/cli/connect/mcp/tools/organisms.d.ts +2 -0
- package/dist/src/cli/connect/mcp/tools/organisms.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/organisms.js +9 -1
- package/dist/src/cli/connect/mcp/tools/organisms.js.map +1 -1
- package/dist/src/cli/connect/onboarding-prompt.d.ts +3 -0
- package/dist/src/cli/connect/onboarding-prompt.d.ts.map +1 -1
- package/dist/src/cli/connect/onboarding-prompt.js +10 -3
- package/dist/src/cli/connect/onboarding-prompt.js.map +1 -1
- package/dist/src/generated/api-types.d.ts +309 -2
- package/dist/src/generated/api-types.d.ts.map +1 -1
- package/dist/src/mcp/agent-onboarding.d.ts +4 -0
- package/dist/src/mcp/agent-onboarding.d.ts.map +1 -1
- package/dist/src/mcp/agent-onboarding.js +28 -2
- package/dist/src/mcp/agent-onboarding.js.map +1 -1
- package/dist/src/models/agent-onboarding-schemas.d.ts +47 -0
- package/dist/src/models/agent-onboarding-schemas.d.ts.map +1 -1
- package/dist/src/models/agent-onboarding-schemas.js +117 -0
- package/dist/src/models/agent-onboarding-schemas.js.map +1 -1
- package/dist/src/routes/agent-onboarding.d.ts +5 -0
- package/dist/src/routes/agent-onboarding.d.ts.map +1 -1
- package/dist/src/routes/agent-onboarding.js +21 -2
- package/dist/src/routes/agent-onboarding.js.map +1 -1
- package/dist/src/routes/secretary.d.ts +7 -2
- package/dist/src/routes/secretary.d.ts.map +1 -1
- package/dist/src/routes/secretary.js +119 -28
- package/dist/src/routes/secretary.js.map +1 -1
- package/dist/src/services/onboarding-guide.d.ts +53 -0
- package/dist/src/services/onboarding-guide.d.ts.map +1 -0
- package/dist/src/services/onboarding-guide.js +81 -0
- package/dist/src/services/onboarding-guide.js.map +1 -0
- package/dist/src/services/scheduler.d.ts +9 -0
- package/dist/src/services/scheduler.d.ts.map +1 -1
- package/dist/src/services/scheduler.js +48 -23
- package/dist/src/services/scheduler.js.map +1 -1
- package/dist/src/services/secretary-workbrief.d.ts +144 -0
- package/dist/src/services/secretary-workbrief.d.ts.map +1 -0
- package/dist/src/services/secretary-workbrief.js +315 -0
- package/dist/src/services/secretary-workbrief.js.map +1 -0
- package/dist/src/services/secretary-worktier.d.ts +118 -0
- package/dist/src/services/secretary-worktier.d.ts.map +1 -0
- package/dist/src/services/secretary-worktier.js +157 -0
- package/dist/src/services/secretary-worktier.js.map +1 -0
- package/dist/src/services/skill-bundle/generator.d.ts +3 -0
- package/dist/src/services/skill-bundle/generator.d.ts.map +1 -1
- package/dist/src/services/skill-bundle/generator.js +19 -0
- package/dist/src/services/skill-bundle/generator.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,10 +9,15 @@
|
|
|
9
9
|
* @structure secretaryRouter(config, storage, peers) -> Router
|
|
10
10
|
* - POST /v1/secretary/clarify — send the questions secretary#owner→owner + store the produce job
|
|
11
11
|
* - POST /v1/secretary/reset — wipe the owner's Secretary back to zero (start over)
|
|
12
|
-
* - POST /v1/secretary/
|
|
13
|
-
*
|
|
12
|
+
* - POST /v1/secretary/brief — propose grounded Work Briefs for the active context's gaps (heavy
|
|
13
|
+
* work is DISPATCHED to a Builder, not authored here); deterministic + idempotent, never touches content
|
|
14
|
+
* - GET /v1/secretary/briefs — list the open Work Briefs (proposed/dispatched) for the brief tray
|
|
14
15
|
* @usage app.use(secretaryRouter(config, storage, peers));
|
|
15
16
|
* @version-history
|
|
17
|
+
* v0.4.0 — 2026-07-01 — Light-vs-heavy seam: REPLACED author-now (cheap one-shot authoring that
|
|
18
|
+
* hallucinated) with POST /v1/secretary/brief — the Secretary detects structural gaps and proposes a
|
|
19
|
+
* grounded Work Brief a Builder executes via the appdev MCP tools, instead of inventing content. Adds
|
|
20
|
+
* GET /v1/secretary/briefs for the brief tray. See services/secretary-workbrief + secretary-worktier.
|
|
16
21
|
* v0.3.0 — 2026-06-30 — author-now: fill workspaces with real content at handshake (documents first,
|
|
17
22
|
* schema-valid records, agentic retry) instead of waiting for a tick, and drop any still-empty
|
|
18
23
|
* workspace. Pairs with the Secretary setup skipping fake "example-N" placeholder records.
|
|
@@ -32,7 +37,8 @@ import { listSpecialists, deleteSpecialistConfig } from '../services/specialist.
|
|
|
32
37
|
import { getActiveScheduler } from '../services/scheduler.js';
|
|
33
38
|
import { emitChange } from '../services/event-bus.js';
|
|
34
39
|
import { logger } from '../utils/logger.js';
|
|
35
|
-
import {
|
|
40
|
+
import { proposeWorkBriefs, updateBriefStatus, resolveCompletedBriefs, BRIEF_KEY_PREFIX } from '../services/secretary-workbrief.js';
|
|
41
|
+
import { randomUUID } from 'node:crypto';
|
|
36
42
|
const ClarifySchema = z.object({
|
|
37
43
|
contextId: z.string().min(1).max(200),
|
|
38
44
|
contextName: z.string().max(200).optional().default(''),
|
|
@@ -166,54 +172,139 @@ export function secretaryRouter(config, storage, peers) {
|
|
|
166
172
|
res.status(500).json(error(config.nodeId, 'INTERNAL_ERROR', 'Failed to reset the Secretary'));
|
|
167
173
|
}
|
|
168
174
|
});
|
|
169
|
-
// ── POST /v1/secretary/
|
|
170
|
-
//
|
|
171
|
-
//
|
|
172
|
-
//
|
|
173
|
-
//
|
|
174
|
-
//
|
|
175
|
-
//
|
|
176
|
-
|
|
177
|
-
router.post('/v1/secretary/
|
|
175
|
+
// ── POST /v1/secretary/brief ── propose grounded Work Briefs for the active context's workspaces (the
|
|
176
|
+
// heavy-work path). The cheap Secretary NO LONGER authors content one-shot (it hallucinated and went
|
|
177
|
+
// "onto the Builders' turf"); instead it detects structural gaps (empty/thin workspaces, stale content,
|
|
178
|
+
// off-target KPIs) and assembles a brief — Current picture + real Discovery sources + exact schemas +
|
|
179
|
+
// MCP playbook — that a Builder (a connected big AI via the appdev MCP tools) executes. Deterministic
|
|
180
|
+
// (no paid AI call), idempotent (deduped against open briefs by gap), additive (never touches content).
|
|
181
|
+
// Optional `ws` scopes to one workspace. The view then offers "Open in Claude Desktop" / dispatch.
|
|
182
|
+
const BriefSchema = z.object({ ws: z.string().max(200).optional() });
|
|
183
|
+
router.post('/v1/secretary/brief', requireAuth(), requireRole('owner'), async (req, res) => {
|
|
178
184
|
const owner = req.auth.owner;
|
|
179
185
|
const ownerGhii = `${owner}@${config.nodeId}`;
|
|
186
|
+
const parsed = BriefSchema.safeParse(req.body ?? {});
|
|
187
|
+
if (!parsed.success) {
|
|
188
|
+
res.status(400).json(error(config.nodeId, 'INVALID_INPUT', parsed.error.issues[0]?.message || 'Invalid brief payload'));
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
180
191
|
try {
|
|
181
192
|
const cfgRec = await storage.getMemory(ownerGhii, 'secretary.config');
|
|
182
193
|
const cfg = (cfgRec?.value ?? {});
|
|
183
194
|
const contexts = Array.isArray(cfg.contexts) ? cfg.contexts : [];
|
|
184
195
|
const active = contexts.find((c) => c.id === cfg.activeContextId) || contexts[0];
|
|
185
196
|
if (!active || !active.organismId) {
|
|
186
|
-
res.status(400).json(error(config.nodeId, 'NO_CONTEXT', 'No active Secretary context with an organism to
|
|
197
|
+
res.status(400).json(error(config.nodeId, 'NO_CONTEXT', 'No active Secretary context with an organism to brief.'));
|
|
187
198
|
return;
|
|
188
199
|
}
|
|
189
200
|
const orgId = active.organismId;
|
|
190
|
-
// Open goals for this context steer
|
|
201
|
+
// Open goals for this context steer the brief's "why".
|
|
191
202
|
const goalRecs = await storage.listMemory(ownerGhii, { prefix: 'secretary.goal.' }).catch(() => []);
|
|
192
203
|
const openGoals = goalRecs
|
|
193
204
|
.map((r) => (r.value ?? {}))
|
|
194
205
|
.filter((g) => g.status === 'open' && (!g.contextId || g.contextId === active.id));
|
|
195
|
-
// Honour the owner's autoRetry/maxRetries (flaky models retry instead of dying).
|
|
196
|
-
const aiPrefs = (await storage.getMemory(ownerGhii, 'openrouter.settings'))?.value;
|
|
197
|
-
const maxRetries = aiPrefs?.autoRetry === false ? 0 : (typeof aiPrefs?.maxRetries === 'number' ? aiPrefs.maxRetries : 3);
|
|
198
206
|
const regKey = `organism.${orgId}.meta.workspaces`;
|
|
199
207
|
const regRec = await storage.getMemory(ownerGhii, regKey);
|
|
200
208
|
const wsEntries = (regRec?.value?.workspaces) ?? [];
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
209
|
+
let wsList = wsEntries.filter((w) => w && w.id).map((w) => ({ id: w.id, name: w.name || w.id }));
|
|
210
|
+
const onlyWs = parsed.data.ws;
|
|
211
|
+
if (onlyWs)
|
|
212
|
+
wsList = wsList.filter((w) => w.id === onlyWs);
|
|
213
|
+
const { briefs } = await proposeWorkBriefs(storage, config, { ownerGhii, ownerName: owner, active, wsList, openGoals });
|
|
214
|
+
emitChange('agents');
|
|
215
|
+
logger.info('[secretary] brief', { owner, proposed: briefs.length, workspaces: wsList.length });
|
|
216
|
+
res.json(success(config.nodeId, {
|
|
217
|
+
briefs: briefs.map((b) => ({ id: b.id, objective: b.objective, ws: b.ws, wsName: b.wsName, gaps: b.gaps.length, status: b.status })),
|
|
218
|
+
proposed: briefs.length, workspaces: wsList.length,
|
|
219
|
+
}, [{ description: 'Open the Secretary', method: 'GET', url: '/v1/secretary' }]));
|
|
220
|
+
}
|
|
221
|
+
catch (err) {
|
|
222
|
+
logger.error('[secretary] brief failed', { owner, error: err.message });
|
|
223
|
+
res.status(500).json(error(config.nodeId, 'INTERNAL_ERROR', 'Failed to build work briefs'));
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
// ── GET /v1/secretary/briefs ── list the open Work Briefs (proposed/dispatched) for the brief tray, newest
|
|
227
|
+
// first. Owner-scoped private memory; the full brief markdown + MCP hints are included so the view can
|
|
228
|
+
// render "Open in Claude Desktop" without a second fetch.
|
|
229
|
+
router.get('/v1/secretary/briefs', requireAuth(), requireRole('owner'), async (req, res) => {
|
|
230
|
+
const owner = req.auth.owner;
|
|
231
|
+
const ownerGhii = `${owner}@${config.nodeId}`;
|
|
232
|
+
// Self-heal: a dispatched brief whose Builder task has finished flips to 'done' here, so it leaves the
|
|
233
|
+
// tray on its own when the owner looks — no manual Done needed.
|
|
234
|
+
await resolveCompletedBriefs(storage, ownerGhii).catch(() => 0);
|
|
235
|
+
const recs = await storage.listMemory(ownerGhii, { prefix: BRIEF_KEY_PREFIX }).catch(() => []);
|
|
236
|
+
const briefs = recs
|
|
237
|
+
.map((r) => r.value)
|
|
238
|
+
.filter((b) => b && (b.status === 'proposed' || b.status === 'dispatched'))
|
|
239
|
+
.sort((a, b) => (a.createdAt < b.createdAt ? 1 : a.createdAt > b.createdAt ? -1 : 0));
|
|
240
|
+
res.json(success(config.nodeId, { briefs }));
|
|
241
|
+
});
|
|
242
|
+
// ── POST /v1/secretary/brief/:id/dispatch ── queue a Work Brief as a task a connected Builder picks up
|
|
243
|
+
// and runs via the appdev MCP tools (lane b). The Builder is any of THIS owner's connected agents that
|
|
244
|
+
// is NOT the Secretary (the watcher) or a node-local specialist. Marks the brief 'dispatched'.
|
|
245
|
+
const DispatchSchema = z.object({ targetAgent: z.string().min(1).max(300) });
|
|
246
|
+
router.post('/v1/secretary/brief/:id/dispatch', requireAuth(), requireRole('owner'), async (req, res) => {
|
|
247
|
+
const owner = req.auth.owner;
|
|
248
|
+
const ownerGhii = `${owner}@${config.nodeId}`;
|
|
249
|
+
const briefId = req.params.id;
|
|
250
|
+
const parsed = DispatchSchema.safeParse(req.body ?? {});
|
|
251
|
+
if (!parsed.success) {
|
|
252
|
+
res.status(400).json(error(config.nodeId, 'INVALID_INPUT', 'targetAgent is required'));
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
try {
|
|
256
|
+
const rec = await storage.getMemory(ownerGhii, `${BRIEF_KEY_PREFIX}${briefId}`);
|
|
257
|
+
if (!rec) {
|
|
258
|
+
res.status(404).json(error(config.nodeId, 'NOT_FOUND', 'Work brief not found'));
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
const brief = rec.value;
|
|
262
|
+
// Resolve + authorize the target Builder: it must be one of THIS owner's agents, and not the Secretary
|
|
263
|
+
// or a node-local specialist (those are not Builders — heavy work goes to a big external AI via MCP).
|
|
264
|
+
const agent = await storage.getAgent(parsed.data.targetAgent);
|
|
265
|
+
if (!agent || agent.owner !== owner) {
|
|
266
|
+
res.status(400).json(error(config.nodeId, 'INVALID_TARGET', 'Unknown Builder for this owner'));
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
const tags = agent.tags || [];
|
|
270
|
+
if (tags.includes('system:secretary') || tags.includes('system:specialist')) {
|
|
271
|
+
res.status(400).json(error(config.nodeId, 'INVALID_TARGET', 'Pick a connected Builder (a big AI), not the Secretary or a specialist'));
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
const now = new Date().toISOString();
|
|
275
|
+
const taskId = randomUUID();
|
|
276
|
+
await storage.createAgentTask({
|
|
277
|
+
id: taskId, agentGaii: agent.gaii, ownerGaii: ownerGhii,
|
|
278
|
+
title: String(brief.objective || 'Work brief').slice(0, 200), description: String(brief.brief || '').slice(0, 20000),
|
|
279
|
+
scope: [], rules: [], verification: { userExpects: String(brief.objective || ''), technicalChecks: [] }, todos: [],
|
|
280
|
+
status: 'queued', parentTaskId: `brief:${briefId}`, createdAt: now, updatedAt: now,
|
|
206
281
|
});
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
282
|
+
await updateBriefStatus(storage, ownerGhii, briefId, { status: 'dispatched', dispatchedTo: agent.gaii, taskId });
|
|
283
|
+
emitChange('agent-tasks', ownerGhii);
|
|
284
|
+
emitChange('agents');
|
|
285
|
+
logger.info('[secretary] brief dispatched', { owner, briefId, to: agent.gaii, taskId });
|
|
286
|
+
res.json(success(config.nodeId, { dispatched: true, taskId, to: agent.gaii }, [
|
|
287
|
+
{ description: 'Track the task', method: 'GET', url: `/v1/agents/${encodeURIComponent(agent.name)}/tasks` },
|
|
211
288
|
]));
|
|
212
289
|
}
|
|
213
290
|
catch (err) {
|
|
214
|
-
logger.error('[secretary]
|
|
215
|
-
res.status(500).json(error(config.nodeId, 'INTERNAL_ERROR', 'Failed to
|
|
291
|
+
logger.error('[secretary] brief dispatch failed', { owner, briefId, error: err.message });
|
|
292
|
+
res.status(500).json(error(config.nodeId, 'INTERNAL_ERROR', 'Failed to dispatch the brief'));
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
// ── POST /v1/secretary/brief/:id/done ── resolve a Work Brief (the owner handled it, or it's no longer
|
|
296
|
+
// relevant). Marks it 'done' so it leaves the tray; the tick won't re-propose the same gap.
|
|
297
|
+
router.post('/v1/secretary/brief/:id/done', requireAuth(), requireRole('owner'), async (req, res) => {
|
|
298
|
+
const owner = req.auth.owner;
|
|
299
|
+
const ownerGhii = `${owner}@${config.nodeId}`;
|
|
300
|
+
const briefId = req.params.id;
|
|
301
|
+
const updated = await updateBriefStatus(storage, ownerGhii, briefId, { status: 'done' });
|
|
302
|
+
if (!updated) {
|
|
303
|
+
res.status(404).json(error(config.nodeId, 'NOT_FOUND', 'Work brief not found'));
|
|
304
|
+
return;
|
|
216
305
|
}
|
|
306
|
+
emitChange('agents');
|
|
307
|
+
res.json(success(config.nodeId, { done: true }));
|
|
217
308
|
});
|
|
218
309
|
return router;
|
|
219
310
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secretary.js","sourceRoot":"","sources":["../../../src/routes/secretary.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"secretary.js","sourceRoot":"","sources":["../../../src/routes/secretary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file onboarding-guide.ts
|
|
3
|
+
* @description Builds the machine-readable Hello Integration guidance attached to the
|
|
4
|
+
* onboarding status payload: per-step `descriptionText` + `howTo`, a flow-scoped
|
|
5
|
+
* `step_guide`, and a reachability `summary`. A connector drives onboarding from this
|
|
6
|
+
* (calling the exact tool named per pending step) instead of fabricating
|
|
7
|
+
* `aimeat_onboarding_<stepId>`. Single source so the REST GET and MCP status surfaces
|
|
8
|
+
* never drift.
|
|
9
|
+
* @structure
|
|
10
|
+
* - enrichSteps() -- per-step descriptionText + howTo (on a copy, never persisted)
|
|
11
|
+
* - buildStepGuide() -- { [stepId]: StepHowTo } for the steps in this agent's flow
|
|
12
|
+
* - buildOnboardingSummary() -- required/optional counts + completable + next_required_step
|
|
13
|
+
* @usage
|
|
14
|
+
* import { enrichSteps, buildStepGuide, buildOnboardingSummary } from '../services/onboarding-guide.js';
|
|
15
|
+
* @version-history
|
|
16
|
+
* v1.0.0 -- 2026-06-30 -- Initial creation: deterministic Hello Integration completion guidance.
|
|
17
|
+
*/
|
|
18
|
+
import type { AgentOnboardingStep } from '../storage/interface.js';
|
|
19
|
+
import { type StepHowTo } from '../models/agent-onboarding-schemas.js';
|
|
20
|
+
export interface EnrichedStep extends AgentOnboardingStep {
|
|
21
|
+
/** Localised, human-readable resolution of `description` (which is an i18n key). */
|
|
22
|
+
descriptionText: string;
|
|
23
|
+
/** How to complete this step (tool + args), or null when the step id has no mapping. */
|
|
24
|
+
howTo: StepHowTo | null;
|
|
25
|
+
}
|
|
26
|
+
export interface OnboardingSummary {
|
|
27
|
+
required_total: number;
|
|
28
|
+
required_passed: number;
|
|
29
|
+
required_remaining: number;
|
|
30
|
+
optional_total: number;
|
|
31
|
+
optional_passed: number;
|
|
32
|
+
optional_remaining: number;
|
|
33
|
+
/** true once every required step has passed -- the agent can stop here. */
|
|
34
|
+
completable: boolean;
|
|
35
|
+
/** First not-yet-passed required step id (pending or failed), or null when none remain. */
|
|
36
|
+
next_required_step: string | null;
|
|
37
|
+
/** Ids of pending optional steps (these never block completion). */
|
|
38
|
+
optional_pending: string[];
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Returns a COPY of `steps` with `descriptionText` (resolved via `resolveText`) and `howTo`
|
|
42
|
+
* attached. Never mutates the input -- the persisted onboarding record is untouched.
|
|
43
|
+
*/
|
|
44
|
+
export declare function enrichSteps(steps: AgentOnboardingStep[], resolveText: (key: string) => string, agentName: string): EnrichedStep[];
|
|
45
|
+
/** Flow-scoped `{ [stepId]: StepHowTo }` -- only the steps in this agent's flow, `{name}`-substituted. */
|
|
46
|
+
export declare function buildStepGuide(steps: AgentOnboardingStep[], agentName: string): Record<string, StepHowTo>;
|
|
47
|
+
/**
|
|
48
|
+
* Reachability summary. Completion gates ONLY on required steps; optional steps (declare_services +
|
|
49
|
+
* the offers ladder) never block. All counts derive from the actual step list, so reduced
|
|
50
|
+
* task-runner/workstation flows report their own totals.
|
|
51
|
+
*/
|
|
52
|
+
export declare function buildOnboardingSummary(steps: AgentOnboardingStep[]): OnboardingSummary;
|
|
53
|
+
//# sourceMappingURL=onboarding-guide.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding-guide.d.ts","sourceRoot":"","sources":["../../../src/services/onboarding-guide.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAErF,MAAM,WAAW,YAAa,SAAQ,mBAAmB;IACvD,oFAAoF;IACpF,eAAe,EAAE,MAAM,CAAC;IACxB,wFAAwF;IACxF,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2EAA2E;IAC3E,WAAW,EAAE,OAAO,CAAC;IACrB,2FAA2F;IAC3F,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,oEAAoE;IACpE,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAoBD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,mBAAmB,EAAE,EAC5B,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,EACpC,SAAS,EAAE,MAAM,GAChB,YAAY,EAAE,CAMhB;AAED,0GAA0G;AAC1G,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAOzG;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,mBAAmB,EAAE,GAAG,iBAAiB,CAgBtF"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file onboarding-guide.ts
|
|
3
|
+
* @description Builds the machine-readable Hello Integration guidance attached to the
|
|
4
|
+
* onboarding status payload: per-step `descriptionText` + `howTo`, a flow-scoped
|
|
5
|
+
* `step_guide`, and a reachability `summary`. A connector drives onboarding from this
|
|
6
|
+
* (calling the exact tool named per pending step) instead of fabricating
|
|
7
|
+
* `aimeat_onboarding_<stepId>`. Single source so the REST GET and MCP status surfaces
|
|
8
|
+
* never drift.
|
|
9
|
+
* @structure
|
|
10
|
+
* - enrichSteps() -- per-step descriptionText + howTo (on a copy, never persisted)
|
|
11
|
+
* - buildStepGuide() -- { [stepId]: StepHowTo } for the steps in this agent's flow
|
|
12
|
+
* - buildOnboardingSummary() -- required/optional counts + completable + next_required_step
|
|
13
|
+
* @usage
|
|
14
|
+
* import { enrichSteps, buildStepGuide, buildOnboardingSummary } from '../services/onboarding-guide.js';
|
|
15
|
+
* @version-history
|
|
16
|
+
* v1.0.0 -- 2026-06-30 -- Initial creation: deterministic Hello Integration completion guidance.
|
|
17
|
+
*/
|
|
18
|
+
import { getStepHowTo } from '../models/agent-onboarding-schemas.js';
|
|
19
|
+
/** Deep-substitute `{name}` in every string within a JSON-ish value (returns a copy). */
|
|
20
|
+
function substituteName(value, name) {
|
|
21
|
+
if (typeof value === 'string')
|
|
22
|
+
return value.replaceAll('{name}', name);
|
|
23
|
+
if (Array.isArray(value))
|
|
24
|
+
return value.map(v => substituteName(v, name));
|
|
25
|
+
if (value && typeof value === 'object') {
|
|
26
|
+
const out = {};
|
|
27
|
+
for (const [k, v] of Object.entries(value))
|
|
28
|
+
out[k] = substituteName(v, name);
|
|
29
|
+
return out;
|
|
30
|
+
}
|
|
31
|
+
return value;
|
|
32
|
+
}
|
|
33
|
+
/** Resolve a step's howTo with `{name}` substituted, or null when the step id is unknown. */
|
|
34
|
+
function howToFor(stepId, agentName) {
|
|
35
|
+
const howTo = getStepHowTo(stepId);
|
|
36
|
+
return howTo ? substituteName(howTo, agentName) : null;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Returns a COPY of `steps` with `descriptionText` (resolved via `resolveText`) and `howTo`
|
|
40
|
+
* attached. Never mutates the input -- the persisted onboarding record is untouched.
|
|
41
|
+
*/
|
|
42
|
+
export function enrichSteps(steps, resolveText, agentName) {
|
|
43
|
+
return steps.map(step => ({
|
|
44
|
+
...step,
|
|
45
|
+
descriptionText: resolveText(step.description),
|
|
46
|
+
howTo: howToFor(step.id, agentName),
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
/** Flow-scoped `{ [stepId]: StepHowTo }` -- only the steps in this agent's flow, `{name}`-substituted. */
|
|
50
|
+
export function buildStepGuide(steps, agentName) {
|
|
51
|
+
const guide = {};
|
|
52
|
+
for (const step of steps) {
|
|
53
|
+
const howTo = howToFor(step.id, agentName);
|
|
54
|
+
if (howTo)
|
|
55
|
+
guide[step.id] = howTo;
|
|
56
|
+
}
|
|
57
|
+
return guide;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Reachability summary. Completion gates ONLY on required steps; optional steps (declare_services +
|
|
61
|
+
* the offers ladder) never block. All counts derive from the actual step list, so reduced
|
|
62
|
+
* task-runner/workstation flows report their own totals.
|
|
63
|
+
*/
|
|
64
|
+
export function buildOnboardingSummary(steps) {
|
|
65
|
+
const required = steps.filter(s => s.required);
|
|
66
|
+
const optional = steps.filter(s => !s.required);
|
|
67
|
+
const requiredPassed = required.filter(s => s.status === 'passed').length;
|
|
68
|
+
const optionalPassed = optional.filter(s => s.status === 'passed').length;
|
|
69
|
+
return {
|
|
70
|
+
required_total: required.length,
|
|
71
|
+
required_passed: requiredPassed,
|
|
72
|
+
required_remaining: required.length - requiredPassed,
|
|
73
|
+
optional_total: optional.length,
|
|
74
|
+
optional_passed: optionalPassed,
|
|
75
|
+
optional_remaining: optional.length - optionalPassed,
|
|
76
|
+
completable: required.every(s => s.status === 'passed'),
|
|
77
|
+
next_required_step: required.find(s => s.status !== 'passed')?.id ?? null,
|
|
78
|
+
optional_pending: optional.filter(s => s.status === 'pending').map(s => s.id),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=onboarding-guide.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding-guide.js","sourceRoot":"","sources":["../../../src/services/onboarding-guide.ts"],"names":[],"mappings":"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"}
|
|
@@ -120,6 +120,15 @@ export declare class Scheduler {
|
|
|
120
120
|
private ownerHasUsableAiKey;
|
|
121
121
|
/** Read the active context's workspaces (id + name) from its self-organism registry. */
|
|
122
122
|
private loadContextWorkspaces;
|
|
123
|
+
/**
|
|
124
|
+
* Detect structural gaps in the active context's workspaces and propose Work Briefs for a Builder to
|
|
125
|
+
* execute — heavy work is DISPATCHED, never invented by the cheap Secretary. Deterministic + idempotent:
|
|
126
|
+
* a gap already covered by an OPEN brief (proposed/dispatched) is skipped, so repeated ticks converge
|
|
127
|
+
* instead of spamming. Bounded to MAX_NEW_BRIEFS new briefs per tick. No paid AI call (storage reads +
|
|
128
|
+
* best-effort Discovery only). Briefs are persisted as secretary.brief.{id}; the view's brief tray reads
|
|
129
|
+
* them and offers "Open in Claude Desktop" / "Send to a connected Builder".
|
|
130
|
+
*/
|
|
131
|
+
private proposeWorkBriefs;
|
|
123
132
|
/** Build the tick's system + user prompt asking for a STRUCTURED action list (P1-A). */
|
|
124
133
|
private buildTickPrompt;
|
|
125
134
|
/** Best-match a workspace by (possibly fuzzy) name; falls back to the first workspace. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../src/services/scheduler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../src/services/scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,12 @@
|
|
|
5
5
|
* Supports special @activate trigger: runs on extension activation AND every server startup.
|
|
6
6
|
* Every execution creates an ExecutionLogEntry with timing, result, and memory I/O.
|
|
7
7
|
* @version-history
|
|
8
|
+
* v2.13.0 — 2026-07-01 — Light-vs-heavy seam: the tick no longer cheap-authors content (the one-shot
|
|
9
|
+
* authoring in the now-removed secretary-authoring.ts hallucinated). It now detects STRUCTURAL gaps
|
|
10
|
+
* (empty/thin workspaces, stale content, off-target KPIs) and proposes grounded Work Briefs a Builder
|
|
11
|
+
* (a connected big AI via the appdev MCP tools) executes — proposeWorkBriefs in services/
|
|
12
|
+
* secretary-workbrief.ts (deterministic, no paid call, deduped against open briefs). The cheap
|
|
13
|
+
* Secretary watches + hands off; it never authors structure/data.
|
|
8
14
|
* v2.12.0 — 2026-06-30 — Learning loop closes: (A) selectLessons threads the highest-signal reviewed-
|
|
9
15
|
* decision scores into the tick's briefing/action prompt (repeat what worked, avoid what didn't);
|
|
10
16
|
* (B) proposeLearnedRule — when a cluster of reviewed decisions scored poorly, the tick asks for ONE
|
|
@@ -60,7 +66,8 @@ import { executeExtensionAction, trackMemoryAccess } from './extension-runtime.j
|
|
|
60
66
|
import { getEncryptionKey } from './encryption.js';
|
|
61
67
|
import { getExtSecretKeys, getInstanceSecretKeys, decryptSecretFields } from './extension-secrets.js';
|
|
62
68
|
import { completeForOwner } from './ai-completion.js';
|
|
63
|
-
import {
|
|
69
|
+
import { proposeWorkBriefs as buildContextBriefs, resolveCompletedBriefs } from './secretary-workbrief.js';
|
|
70
|
+
import { notify } from './notify.js';
|
|
64
71
|
import { appendSecretaryFeed } from './secretary-feed.js';
|
|
65
72
|
import { produceClarifyDeliverable } from './secretary-clarify.js';
|
|
66
73
|
import { listSpecialists } from './specialist.js';
|
|
@@ -735,29 +742,31 @@ export class Scheduler {
|
|
|
735
742
|
const feedText = deferred.length ? `${briefingText}\n\n${deferred.join('\n')}` : briefingText;
|
|
736
743
|
await this.appendFeed(owner, { kind: 'briefing', contextId: active.id, contextName: active.name || '', text: feedText });
|
|
737
744
|
writes.push('secretary.feed');
|
|
738
|
-
//
|
|
739
|
-
//
|
|
740
|
-
//
|
|
741
|
-
//
|
|
742
|
-
//
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
745
|
+
// Heavy work is DISPATCHED, not invented here. Instead of asking the cheap model to author content
|
|
746
|
+
// one-shot (which hallucinated and "went onto the Builders' turf"), the tick detects STRUCTURAL gaps
|
|
747
|
+
// (empty/thin workspaces, stale content, off-target KPIs) and proposes a grounded Work Brief a Builder
|
|
748
|
+
// — a connected big AI via the appdev MCP tools — executes (the owner pastes it into Claude Desktop,
|
|
749
|
+
// or dispatches it to a connected agent). Brief assembly is deterministic (no paid call), idempotent
|
|
750
|
+
// (deduped against open briefs by gap), and bounded per tick. The cheap Secretary never authors data.
|
|
751
|
+
// Self-heal first: a dispatched brief whose Builder task finished flips to 'done' so it leaves the tray.
|
|
752
|
+
await resolveCompletedBriefs(this.storage, owner).catch(() => 0);
|
|
753
|
+
const briefed = await this.proposeWorkBriefs(owner, ownerName, active, wsList, openGoals);
|
|
754
|
+
if (briefed.writes.length) {
|
|
755
|
+
writes.push(...briefed.writes);
|
|
756
|
+
for (const line of briefed.feedLines) {
|
|
757
|
+
await this.appendFeed(owner, { kind: 'briefing', contextId: active.id, contextName: active.name || '', text: line, href: '/v1/secretary' });
|
|
758
|
+
}
|
|
759
|
+
writes.push('secretary.feed');
|
|
760
|
+
emitChange('agents', owner);
|
|
761
|
+
// Notify the owner (the header bell) when NEW heavy work is ready to hand off — so a brief the tick
|
|
762
|
+
// proposes overnight is actively surfaced, not just discovered on the next visit. Best-effort.
|
|
763
|
+
if (briefed.briefs.length) {
|
|
764
|
+
await notify(this.storage, owner, {
|
|
765
|
+
type: 'secretary_work_brief',
|
|
766
|
+
title: briefed.briefs.length === 1 ? '1 work brief ready' : `${briefed.briefs.length} work briefs ready`,
|
|
767
|
+
body: 'Heavy work the Secretary prepared — hand it to a Builder.',
|
|
768
|
+
link: '/v1/secretary',
|
|
753
769
|
});
|
|
754
|
-
paidMorsels += authored.morsels;
|
|
755
|
-
writes.push(...authored.writes);
|
|
756
|
-
for (const line of authored.summaries) {
|
|
757
|
-
await this.appendFeed(owner, { kind: 'act', contextId: active.id, contextName: active.name || '', text: line, href: `/v1/profile?tab=organisms&org=${active.organismId}` });
|
|
758
|
-
}
|
|
759
|
-
if (authored.summaries.length)
|
|
760
|
-
writes.push('secretary.feed');
|
|
761
770
|
}
|
|
762
771
|
}
|
|
763
772
|
}
|
|
@@ -799,6 +808,22 @@ export class Scheduler {
|
|
|
799
808
|
const list = (rec?.value?.workspaces) ?? [];
|
|
800
809
|
return list.filter((w) => w && w.id).map((w) => ({ id: w.id, name: w.name || w.id }));
|
|
801
810
|
}
|
|
811
|
+
/**
|
|
812
|
+
* Detect structural gaps in the active context's workspaces and propose Work Briefs for a Builder to
|
|
813
|
+
* execute — heavy work is DISPATCHED, never invented by the cheap Secretary. Deterministic + idempotent:
|
|
814
|
+
* a gap already covered by an OPEN brief (proposed/dispatched) is skipped, so repeated ticks converge
|
|
815
|
+
* instead of spamming. Bounded to MAX_NEW_BRIEFS new briefs per tick. No paid AI call (storage reads +
|
|
816
|
+
* best-effort Discovery only). Briefs are persisted as secretary.brief.{id}; the view's brief tray reads
|
|
817
|
+
* them and offers "Open in Claude Desktop" / "Send to a connected Builder".
|
|
818
|
+
*/
|
|
819
|
+
async proposeWorkBriefs(owner, ownerName, active, wsList, openGoals) {
|
|
820
|
+
const briefContext = { id: active.id, name: active.name, organismId: active.organismId, brain: active.brain, strategy: active.strategy };
|
|
821
|
+
const { writes, briefs } = await buildContextBriefs(this.storage, this.config, {
|
|
822
|
+
ownerGhii: owner, ownerName, active: briefContext, wsList, openGoals,
|
|
823
|
+
});
|
|
824
|
+
const feedLines = briefs.map((b) => `📋 Work brief ready — ${b.objective} Open it in the Secretary to hand to a Builder.`);
|
|
825
|
+
return { writes, feedLines, briefs };
|
|
826
|
+
}
|
|
802
827
|
/** Build the tick's system + user prompt asking for a STRUCTURED action list (P1-A). */
|
|
803
828
|
buildTickPrompt(ownerName, active, openGoals, wsList, lessons = []) {
|
|
804
829
|
const rules = (active.brain?.rules || []).map((r) => '- ' + (r.description || '')).join('\n');
|