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.
Files changed (58) hide show
  1. package/dist/locales/en.json +52 -4
  2. package/dist/locales/fi.json +52 -4
  3. package/dist/public/css/views/secretary.css +52 -0
  4. package/dist/public/js/i18n.js +9 -0
  5. package/dist/public/js/services/secretary-helpers.js +8 -4
  6. package/dist/public/js/services/secretary-policy.js +28 -3
  7. package/dist/public/views/profile/agents/agent-card.js +6 -4
  8. package/dist/public/views/profile/agents/tab-integration.js +5 -2
  9. package/dist/public/views/secretary/cards.js +46 -15
  10. package/dist/public/views/secretary/dashboard.js +68 -2
  11. package/dist/public/views/secretary.js +208 -40
  12. package/dist/src/cli/connect/mcp/tools/organisms.d.ts +2 -0
  13. package/dist/src/cli/connect/mcp/tools/organisms.d.ts.map +1 -1
  14. package/dist/src/cli/connect/mcp/tools/organisms.js +9 -1
  15. package/dist/src/cli/connect/mcp/tools/organisms.js.map +1 -1
  16. package/dist/src/cli/connect/onboarding-prompt.d.ts +3 -0
  17. package/dist/src/cli/connect/onboarding-prompt.d.ts.map +1 -1
  18. package/dist/src/cli/connect/onboarding-prompt.js +10 -3
  19. package/dist/src/cli/connect/onboarding-prompt.js.map +1 -1
  20. package/dist/src/generated/api-types.d.ts +309 -2
  21. package/dist/src/generated/api-types.d.ts.map +1 -1
  22. package/dist/src/mcp/agent-onboarding.d.ts +4 -0
  23. package/dist/src/mcp/agent-onboarding.d.ts.map +1 -1
  24. package/dist/src/mcp/agent-onboarding.js +28 -2
  25. package/dist/src/mcp/agent-onboarding.js.map +1 -1
  26. package/dist/src/models/agent-onboarding-schemas.d.ts +47 -0
  27. package/dist/src/models/agent-onboarding-schemas.d.ts.map +1 -1
  28. package/dist/src/models/agent-onboarding-schemas.js +117 -0
  29. package/dist/src/models/agent-onboarding-schemas.js.map +1 -1
  30. package/dist/src/routes/agent-onboarding.d.ts +5 -0
  31. package/dist/src/routes/agent-onboarding.d.ts.map +1 -1
  32. package/dist/src/routes/agent-onboarding.js +21 -2
  33. package/dist/src/routes/agent-onboarding.js.map +1 -1
  34. package/dist/src/routes/secretary.d.ts +7 -2
  35. package/dist/src/routes/secretary.d.ts.map +1 -1
  36. package/dist/src/routes/secretary.js +119 -28
  37. package/dist/src/routes/secretary.js.map +1 -1
  38. package/dist/src/services/onboarding-guide.d.ts +53 -0
  39. package/dist/src/services/onboarding-guide.d.ts.map +1 -0
  40. package/dist/src/services/onboarding-guide.js +81 -0
  41. package/dist/src/services/onboarding-guide.js.map +1 -0
  42. package/dist/src/services/scheduler.d.ts +9 -0
  43. package/dist/src/services/scheduler.d.ts.map +1 -1
  44. package/dist/src/services/scheduler.js +48 -23
  45. package/dist/src/services/scheduler.js.map +1 -1
  46. package/dist/src/services/secretary-workbrief.d.ts +144 -0
  47. package/dist/src/services/secretary-workbrief.d.ts.map +1 -0
  48. package/dist/src/services/secretary-workbrief.js +315 -0
  49. package/dist/src/services/secretary-workbrief.js.map +1 -0
  50. package/dist/src/services/secretary-worktier.d.ts +118 -0
  51. package/dist/src/services/secretary-worktier.d.ts.map +1 -0
  52. package/dist/src/services/secretary-worktier.js +157 -0
  53. package/dist/src/services/secretary-worktier.js.map +1 -0
  54. package/dist/src/services/skill-bundle/generator.d.ts +3 -0
  55. package/dist/src/services/skill-bundle/generator.d.ts.map +1 -1
  56. package/dist/src/services/skill-bundle/generator.js +19 -0
  57. package/dist/src/services/skill-bundle/generator.js.map +1 -1
  58. package/package.json +1 -1
@@ -7,9 +7,13 @@
7
7
  * collapsible "Manage & setup" disclosure header that tucks the set-up-once config cards away.
8
8
  * The view (views/secretary.js) owns all state/handlers and passes them in; the config cards
9
9
  * themselves still live in ./cards.js / ./cards-reach.js. Redesign: docs/internal/2026-06-25-secretary-view-redesign.md.
10
- * @structure quickActionRow · dashStatus · standPanel · actionItemsCard · routinesCard · quickActionsManager · manageHeader (one render function each)
11
- * @usage import { quickActionRow, dashStatus, standPanel, actionItemsCard, routinesCard, quickActionsManager, manageHeader } from '/views/secretary/dashboard.js';
10
+ * @structure quickActionRow · dashStatus · standPanel · briefTrayCard · actionItemsCard · routinesCard · quickActionsManager · manageHeader (one render function each)
11
+ * @usage import { quickActionRow, dashStatus, standPanel, briefTrayCard, actionItemsCard, routinesCard, quickActionsManager, manageHeader } from '/views/secretary/dashboard.js';
12
12
  * @version-history
13
+ * v0.10.0 — 2026-07-01 — Light-vs-heavy seam: briefTrayCard — the Work Brief tray. The cheap Secretary
14
+ * detects structural gaps and proposes grounded briefs; this renders each with "Open in Claude Desktop"
15
+ * (CopyButton with an MCP preface + the brief) and "Send to a connected Builder" (lane b dispatch), so
16
+ * heavy work goes to a big AI via MCP and never gets cheap-authored here.
13
17
  * v0.9.0 — 2026-06-28 — strategyCard: optional steering frame (vision/mission/principles/risks +
14
18
  * current→target + ordered milestone gates with status/focus/reorder/goal-linking + AI re-plan).
15
19
  * v0.8.0 — 2026-06-28 — secretaryDangerCard: a guarded "Reset Secretary" control (type RESET to wipe
@@ -33,6 +37,7 @@ import htm from 'htm';
33
37
  const html = htm.bind(h);
34
38
  import { t } from '/js/i18n.js';
35
39
  import { Markdown } from '/components/Markdown.js';
40
+ import { CopyButton } from '/components/CopyButton.js';
36
41
 
37
42
  /** Core (+ later dynamic) quick actions: a button row above the chat. `items` are descriptors
38
43
  * `{ key, label, title?, primary?, disabled?, hidden?, onClick }` so B3 can extend with dynamic actions. */
@@ -106,6 +111,67 @@ export function standPanel(p) {
106
111
  </section>`;
107
112
  }
108
113
 
114
+ /** Compose the paste a Builder receives in Claude Desktop: a connect-first preface + the full brief.
115
+ * The preface tells the assistant to connect via the appdev MCP if it isn't already, so pasting into a
116
+ * Claude Desktop that has NOT been wired to the node still leads somewhere instead of silently failing. */
117
+ function heavyWorkPrompt(b) {
118
+ return `I'd like you to carry out a work brief on my AIMEAT node using the appdev MCP tools (the aimeat_* tools).
119
+
120
+ FIRST — make sure you can reach my node: if you are not already connected to my AIMEAT node via the appdev MCP, connect now. In the AIMEAT app open Profile → Agents → "Connect a New Agent" for the exact device-authorization steps (or read the node's /llms.txt). You need the aimeat_* tools available before you can do any of the work below.
121
+
122
+ THEN — carry out the brief end-to-end with those tools: build/fill via aimeat_workspace_* / aimeat_organism_*, ground everything in the real sources listed, and never invent facts. If a records space has no real data, leave it empty rather than make something up.
123
+
124
+ ${b.brief || ''}`;
125
+ }
126
+
127
+ /** One Work Brief row: objective + ws + a markdown preview + the two heavy-work lanes (Open in Claude
128
+ * Desktop / Send to a connected Builder) + Done. The seam made physical — the cheap Secretary proposed
129
+ * this; a Builder (a big AI via MCP) executes it. */
130
+ function briefRow(b, p) {
131
+ const builders = p.builders || [];
132
+ const dispatched = b.status === 'dispatched';
133
+ return html`
134
+ <div class="sec-brief" key=${b.id}>
135
+ <div class="sec-brief-top">
136
+ <span class="sec-brief-badge ${dispatched ? 'is-dispatched' : ''}">${dispatched ? t('secretary.brief.dispatchedBadge') : t('secretary.brief.heavyBadge')}</span>
137
+ <span class="sec-brief-obj">${b.objective}</span>
138
+ ${b.wsName ? html`<span class="sec-hint sec-brief-ws">${b.wsName}</span>` : null}
139
+ </div>
140
+ <details class="sec-brief-detail">
141
+ <summary>${t('secretary.brief.preview')}</summary>
142
+ <div class="sec-brief-md"><${Markdown} text=${b.brief || ''} /></div>
143
+ </details>
144
+ ${dispatched ? html`<div class="sec-hint sec-brief-wait">${t('secretary.brief.dispatchedNote')}</div>` : null}
145
+ <div class="sec-brief-actions">
146
+ <${CopyButton} text=${heavyWorkPrompt(b)} className="btn-primary btn-sm" label=${t('secretary.brief.openClaude')} />
147
+ ${builders.length ? html`
148
+ <select class="sec-select" disabled=${dispatched || p.dispatching === b.id}
149
+ onChange=${(e) => { const v = e.target.value; e.target.value = ''; if (v) p.onDispatch(b.id, v); }}>
150
+ <option value="">${dispatched ? t('secretary.brief.waiting') : t('secretary.brief.sendBuilder')}</option>
151
+ ${builders.map((a) => html`<option value=${a.gaii} key=${a.gaii}>${a.name}</option>`)}
152
+ </select>` : html`<span class="sec-hint">${t('secretary.brief.noBuilder')}</span>`}
153
+ <button class="btn-ghost btn-sm" onClick=${() => p.onResolve(b.id)}>${t('secretary.brief.done')}</button>
154
+ </div>
155
+ </div>`;
156
+ }
157
+
158
+ /** The Work Brief tray: heavy work the Secretary detected and prepared for a Builder. Null when empty
159
+ * (no gaps → nothing to hand off). The clear divide between "watch + propose" (cheap, here) and
160
+ * "build + author" (a big AI via MCP). */
161
+ export function briefTrayCard(p) {
162
+ const briefs = p.briefs || [];
163
+ if (!briefs.length) return null;
164
+ return html`
165
+ <section class="sec-card sec-brief-tray">
166
+ <div class="sec-card-head">
167
+ <h2 class="sec-h2">${t('secretary.brief.startHere')} ${t('secretary.brief.title')} <span class="sec-count">${briefs.length}</span></h2>
168
+ <span class="sec-hint">${t('secretary.brief.subtitle')}</span>
169
+ </div>
170
+ <p class="sec-brief-banner">${t('secretary.brief.mcpNote')} <a class="sec-linkbtn" href="/v1/profile">${t('secretary.brief.connectLink')}</a></p>
171
+ ${briefs.map((b) => briefRow(b, p))}
172
+ </section>`;
173
+ }
174
+
109
175
  /** "What's next" — the Secretary's proposed next actions, each with Do it / Skip; doing one runs it. */
110
176
  export function whatsNextPanel(p) {
111
177
  const n = p.answer;
@@ -11,6 +11,31 @@
11
11
  * @structure SECRETARY_ICON · SecretaryView (default) — state, effects, handlers, layout (cards in ./secretary/cards.js + ./secretary/cards-reach.js + dashboard chrome in ./secretary/dashboard.js)
12
12
  * @usage routed at /v1/secretary by spa.html (+ portal.ts spaRoutes).
13
13
  * @version-history
14
+ * v0.25.0 — 2026-07-01 — Light-vs-heavy seam: setup no longer cheap-authors content (that hallucinated).
15
+ * applyResult now CREATES the workspace structure and then proposes grounded Work Briefs (POST
16
+ * /v1/secretary/brief) the user hands to a Builder (a connected big AI via the appdev MCP tools). Drops
17
+ * the per-workspace author-now fill loop + the author_content band. The dashboard brief tray (cards)
18
+ * renders the briefs with "Open in Claude Desktop" / "Send to a connected Builder".
19
+ * v0.24.0 — 2026-06-30 — Never-empty + honest fill result. normalizeInlineManifest now GUARANTEES every
20
+ * workspace has a document space (appends a "Muistiinpanot" doc space when the design gave only records
21
+ * spaces) so the setup fill always has a thinking-home, and is genuinely document-first for unspecified
22
+ * spaces. The per-workspace fill loop counts a workspace as filled ONLY on a real 🖊️ authored line (not
23
+ * a ⚠️ summary), retries the HTTP call once (flaky owl-alpha), and the toast names workspaces it
24
+ * couldn't fill instead of a bare count.
25
+ * v0.23.0 — 2026-06-30 — Autonomy chosen up front: "Set up my Secretary" first asks HOW autonomous it
26
+ * should be (Prepare/Draft · Run/Act · Only-when-I-ask/Off), each explained in plain words incl. the
27
+ * AI-credit cost, BEFORE anything runs — so nobody stumbles into Act bands later. The choice sets the
28
+ * new context's author_content band and, for Draft/Act, turns the daily check-in on. Browser-verified.
29
+ * v0.22.0 — 2026-06-30 — Live setup progress: the fill runs ONE workspace at a time (author-now?ws=)
30
+ * and a top-level overlay (survives the hire→dashboard switch) shows "Filling workspace N/total ·
31
+ * <name>" + a progress bar through the whole slow fill, instead of a couple of fleeting toasts.
32
+ * Browser-verified: overlay cycled 1/2 → 2/2 with the bar advancing.
33
+ * v0.21.0 — 2026-06-30 — Deterministic workspace structure (NO AI): genAndApplyManifest normalizes any
34
+ * design-provided inline manifest into a valid one (fixes namespace form + backfills schemaRef/backing/
35
+ * writeRole/mode, rekeys schemas, derives a records schema when missing) and falls back to a plain
36
+ * document space — instead of a flaky per-workspace AI generator call that left some workspaces as
37
+ * "set up when opened". Every workspace now gets its structure reliably, every time. Verified on the
38
+ * dev server: a 6-workspace design (with non-conforming komento.* namespaces) all came out structured.
14
39
  * v0.20.0 — 2026-06-30 — Content at handshake: a fresh hire now fills its workspaces with REAL content
15
40
  * immediately (POST /v1/secretary/author-now, long timeout) and drops any left empty; the workspace
16
41
  * generator runs with skipExamples so no fake "example-N" placeholder records are written.
@@ -73,12 +98,12 @@ import { t, getLocale } from '/js/i18n.js';
73
98
  import { api, apiGet, apiPost, apiPut, apiDelete } from '/js/api.js';
74
99
  import { useViewCSS } from '/components/useViewCSS.js';
75
100
  import { useToast } from '/components/Toast.js';
76
- import { createOrganism, createWorkspace, generateRaw, parseGenerated, validateGenerated, applyGeneratedWorkspace } from '/js/services/organisms.js';
77
- import { defaultPolicy, mergePolicy } from '/js/services/secretary-policy.js';
101
+ import { createOrganism, createWorkspace, validateGenerated, applyGeneratedWorkspace } from '/js/services/organisms.js';
102
+ import { defaultPolicy, mergePolicy, autonomyPreset } from '/js/services/secretary-policy.js';
78
103
  import { buildDesignPrompt, extractJson, snapshotOf, genCtxId, migrateConfig, suggestContextId, computeBudgetInfo, computeReliability, sanitizeQuickActions, normalizeStrategy, MILESTONE_STATUSES, buildStrategyReplanPrompt, linkMilestoneGoals, keepKnownGoalRefs, SECRETARY_AIMEAT_PRIMER } from '/js/services/secretary-helpers.js';
79
104
  import { contextSwitcher, hirePanel, chatCard, findCard, noteCard, decisionsCard, brainCard, operatingCard, historyCard, metaCard, whatsNextCard, feedCard, automationCard, goalsCard, decisionLogCard } from '/views/secretary/cards.js';
80
105
  import { createResourceCard, knowledgeCard, accessCard, crewCard } from '/views/secretary/cards-reach.js';
81
- import { quickActionRow, dashStatus, standPanel, whatsNextPanel, actionItemsCard, routinesCard, triggersCard, quickActionsManager, manageHeader, workflowDesignPanel, secretaryDangerCard, strategyCard } from '/views/secretary/dashboard.js';
106
+ import { quickActionRow, dashStatus, standPanel, briefTrayCard, whatsNextPanel, actionItemsCard, routinesCard, triggersCard, quickActionsManager, manageHeader, workflowDesignPanel, secretaryDangerCard, strategyCard } from '/views/secretary/dashboard.js';
82
107
  import { fetchWorkflowOffers, designWorkflow, saveDesignedWorkflow, slugifyWorkflowId } from '/views/secretary/workflow-design.js';
83
108
  import { useSpecialists, specialistsCard } from '/views/secretary/use-specialists.js';
84
109
  import { useIntake } from '/views/secretary/use-intake.js';
@@ -110,9 +135,15 @@ export default function SecretaryView() {
110
135
  const [secretary, setSecretary] = useState(undefined); // undefined=loading, null=not provisioned
111
136
  const [hasOpenRouterKey, setHasOpenRouterKey] = useState(false); // owner has an OpenRouter key configured
112
137
  const [config, setConfig] = useState(null); // { contexts:[...], activeContextId }
138
+ const [briefs, setBriefs] = useState([]); // open Work Briefs (heavy work to hand a Builder)
139
+ const [builders, setBuilders] = useState([]); // connected big-AI agents (not Secretary / specialists)
140
+ const [dispatching, setDispatching] = useState(''); // briefId currently being dispatched
113
141
  const [result, setResult] = useState('');
114
142
  const [needs, setNeeds] = useState('');
115
143
  const [applying, setApplying] = useState(false);
144
+ const [setupStep, setSetupStep] = useState(null); // live setup progress: { phase, done, total, name }
145
+ const [chooseMode, setChooseMode] = useState(false); // showing the "how should it work?" autonomy step
146
+ const [setupMode, setSetupMode] = useState('draft'); // chosen autonomy: 'off' | 'draft' | 'act'
116
147
  const [generating, setGenerating] = useState(false);
117
148
  const [showHire, setShowHire] = useState(false);
118
149
  const [hireMode, setHireMode] = useState('new'); // 'new' (add context) | 'edit' (re-run active)
@@ -161,17 +192,42 @@ export default function SecretaryView() {
161
192
  const sec = agents.find((a) => (a.tags || []).includes('system:secretary'))
162
193
  || agents.find((a) => a.name === 'secretary') || null;
163
194
  setSecretary(sec);
195
+ // Builders = connected big-AI agents the heavy work is dispatched to — anything that is NOT the
196
+ // Secretary (the watcher) and NOT a node-local specialist. These are visually distinct in the brief tray.
197
+ setBuilders(agents.filter((a) => a && a.name !== 'secretary'
198
+ && !(a.tags || []).includes('system:secretary') && !(a.tags || []).includes('system:specialist')));
164
199
  if (!sec) return;
165
- const [dir, cfg] = await Promise.all([
200
+ const [dir, cfg, briefResp] = await Promise.all([
166
201
  apiGet('/v1/agents/secretary/directives').catch(() => null),
167
202
  apiGet('/v1/memory/secretary.config').catch(() => null),
203
+ apiGet('/v1/secretary/briefs').catch(() => null),
168
204
  ]);
205
+ setBriefs((briefResp && briefResp.data && briefResp.data.briefs) || []);
169
206
  const rawCfg = (cfg && cfg.data && cfg.data.value) || null;
170
207
  const { config: normalized, changed } = migrateConfig(rawCfg, dir && dir.data);
171
208
  if (changed) await apiPost('/v1/memory', { key: 'secretary.config', value: normalized, visibility: 'private' }).catch(() => {});
172
209
  setConfig(normalized);
173
210
  }, []);
174
211
 
212
+ // Dispatch a Work Brief to a connected Builder (lane b): queues a task the Builder picks up + runs via
213
+ // the appdev MCP tools. Marks the brief 'dispatched' so the tray reflects "waiting on the Builder".
214
+ const dispatchBrief = useCallback(async (briefId, agentGaii) => {
215
+ if (!briefId || !agentGaii) return;
216
+ setDispatching(briefId);
217
+ try {
218
+ const r = await apiPost(`/v1/secretary/brief/${encodeURIComponent(briefId)}/dispatch`, { targetAgent: agentGaii }).catch(() => null);
219
+ if (r && r.data) { showToast(t('secretary.brief.dispatched')); load(); }
220
+ else showToast(t('secretary.brief.dispatchFailed'), true);
221
+ } finally { setDispatching(''); }
222
+ }, [load, showToast]);
223
+
224
+ // Resolve a Work Brief (the owner handled it themselves, or it's no longer relevant). Marks it 'done'.
225
+ const resolveBrief = useCallback(async (briefId) => {
226
+ if (!briefId) return;
227
+ await apiPost(`/v1/secretary/brief/${encodeURIComponent(briefId)}/done`, {}).catch(() => null);
228
+ load();
229
+ }, [load]);
230
+
175
231
  useEffect(() => { load(); }, [load]);
176
232
 
177
233
  // Re-fetch config on server-reported changes: the autonomous tick writes pending decisions + the
@@ -282,9 +338,14 @@ export default function SecretaryView() {
282
338
  return ids;
283
339
  }, []);
284
340
 
285
- // Give a freshly-created workspace a PROPER manifest (AI-designed object types) so it's immediately
286
- // usable, not an empty "set up workspace" shell. Reuses the proven organism workspace generator.
287
- // Best-effort: a manifest-less workspace still exists and can be set up manually.
341
+ // ── Deterministic workspace structure (NO AI) ──
342
+ // The design JSON's inline manifests routinely fail the workspace validator (wrong namespace form, or
343
+ // missing schemaRef/backing/writeRole), which used to push EACH workspace into a flaky per-workspace AI
344
+ // generator call — owl-alpha failing some of those left workspaces as "set up when opened". Instead we
345
+ // NORMALIZE any inline manifest into a valid one ourselves, and fall back to a plain document space.
346
+ // Zero AI calls → every workspace gets its structure reliably, every time.
347
+ const WS_TYPE_MAP = { text: 'string', number: 'number', date: 'string', select: 'string', boolean: 'boolean', reference: 'string' };
348
+ const wsSlug = (s) => String(s || '').trim().toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '') || 'tila';
288
349
  const backfillEnvelope = (mf, wsId, name) => {
289
350
  if (!mf) return;
290
351
  mf.manifestVersion = mf.manifestVersion || '1.0';
@@ -293,25 +354,76 @@ export default function SecretaryView() {
293
354
  mf.kind = mf.kind || 'project';
294
355
  mf.status = ['active', 'paused', 'done', 'archived'].includes(mf.status) ? mf.status : 'active';
295
356
  };
357
+ // Make ANY inline manifest valid: backfill the envelope + each objectType's required fields, normalize
358
+ // the namespace to the required shared.* form (rekeying its schema), and derive a schema for a records
359
+ // type that lacks one. Mutates `manifest`; may add keys to `schemas`.
360
+ const normalizeInlineManifest = (manifest, schemas, wsId, name) => {
361
+ backfillEnvelope(manifest, wsId, name);
362
+ const ots = Array.isArray(manifest.objectTypes) ? manifest.objectTypes : [];
363
+ manifest.objectTypes = ots.filter(Boolean).map((ot, i) => {
364
+ const o = { ...ot };
365
+ o.name = String(o.name || ('tila' + (i + 1))).trim() || ('tila' + (i + 1));
366
+ let ns = String(o.namespace || ('shared.' + wsSlug(o.name)));
367
+ if (!/^(meta|shared|member)\./.test(ns)) {
368
+ const tail = ns.includes('.') ? ns.slice(ns.indexOf('.') + 1) : ns;
369
+ const newNs = 'shared.' + (wsSlug(tail) || wsSlug(o.name));
370
+ if (schemas[o.namespace] && !schemas[newNs]) { schemas[newNs] = schemas[o.namespace]; delete schemas[o.namespace]; }
371
+ ns = newNs;
372
+ }
373
+ o.namespace = ns;
374
+ o.backing = o.backing === 'tasks' ? 'tasks' : 'memory';
375
+ o.writeRole = ['owner', 'admin', 'member'].includes(o.writeRole) ? o.writeRole : 'member';
376
+ o.cardinality = o.cardinality === 'one' ? 'one' : 'many';
377
+ o.versioned = o.versioned !== false;
378
+ o.schemaRef = o.schemaRef || ('schema:' + wsSlug(o.name) + '@1');
379
+ // Document-first: keep an explicit mode as the design gave it; for an UNSPECIFIED space default to a
380
+ // DOCUMENT (flexible information — the common case) unless the design clearly describes a record list
381
+ // (real fields, or a schema already supplied for it). A records space is for same-shaped, list-like
382
+ // data (actions/tasks/bugs/a pipeline/a tracker) only.
383
+ if (o.mode !== 'document' && o.mode !== 'records') {
384
+ o.mode = ((Array.isArray(o.fields) && o.fields.length) || schemas[ns]) ? 'records' : 'document';
385
+ }
386
+ if (o.mode !== 'document' && o.backing === 'memory' && !schemas[ns]) {
387
+ const props = {}; (o.fields || []).forEach((f) => { if (f && f.name) props[f.name] = { type: WS_TYPE_MAP[f.type] || 'string' }; });
388
+ if (!props.id) props.id = { type: 'string' };
389
+ schemas[ns] = { type: 'object', properties: props, required: ['id'] };
390
+ }
391
+ return o;
392
+ });
393
+ // Never-empty guarantee: every workspace needs at least one DOCUMENT space — a free-markdown "thinking
394
+ // home" the setup fill can always author grounded content into, even when the design gave only records
395
+ // spaces (records are real-data-only and legitimately start empty). Append a default document space when
396
+ // the design provided none. Additive + idempotent: only when no document space exists.
397
+ if (!manifest.objectTypes.some((o) => o.mode === 'document')) {
398
+ let dns = 'shared.muistiinpanot';
399
+ if (manifest.objectTypes.some((o) => o.namespace === dns)) dns = 'shared.muistiinpanot-' + wsSlug(name);
400
+ manifest.objectTypes.push({ name: 'Muistiinpanot', namespace: dns, backing: 'memory', writeRole: 'member', cardinality: 'many', versioned: true, schemaRef: 'schema:doc@1', mode: 'document' });
401
+ }
402
+ };
403
+ // A plain document space (free markdown) — the deterministic fallback so a workspace with no usable
404
+ // manifest still gets a valid structure at setup, without any AI call.
405
+ const docSpaceManifest = (wsId, name) => ({
406
+ manifest: { manifestVersion: '1.0', id: wsId, name, kind: 'notes', status: 'active',
407
+ objectTypes: [{ name: 'Dokumentit', namespace: 'shared.dokumentit', backing: 'memory', writeRole: 'member', cardinality: 'many', versioned: true, schemaRef: 'schema:doc@1', mode: 'document' }] },
408
+ schemas: {},
409
+ });
296
410
  const genAndApplyManifest = useCallback(async (orgId, wsId, ws) => {
297
- const name = String(ws.name || '').trim();
411
+ const name = String(ws.name || '').trim() || 'Työtila';
298
412
  try {
299
- // skipExamples: the Secretary fills workspaces with REAL content at setup (author-now), so it never
300
- // wants fake "example-N" placeholder records (they read as disinformation, not examples).
301
- // 1) Use a manifest the design JSON already carried (the prompt-driven path can include it inline).
302
- if (ws.manifest) {
303
- const provided = { manifest: ws.manifest, schemas: ws.schemas || {} };
304
- backfillEnvelope(provided.manifest, wsId, name);
413
+ // skipExamples: the Secretary fills workspaces with REAL content at setup (author-now), never fakes.
414
+ if (ws.manifest && typeof ws.manifest === 'object') {
415
+ const schemas = { ...(ws.schemas || {}) };
416
+ const manifest = JSON.parse(JSON.stringify(ws.manifest));
417
+ normalizeInlineManifest(manifest, schemas, wsId, name);
418
+ const provided = { manifest, schemas };
305
419
  if (!validateGenerated(provided).length) { await applyGeneratedWorkspace(orgId, wsId, provided, { skipExamples: true }); return; }
306
420
  }
307
- // 2) Otherwise (or if the inline one was invalid) design it in-app with the workspace generator.
308
- const generated = parseGenerated(await generateRaw(`${name} — ${ws.purpose || ''}`.trim(), null));
309
- backfillEnvelope(generated && generated.manifest, wsId, name);
310
- if (generated && !validateGenerated(generated).length) await applyGeneratedWorkspace(orgId, wsId, generated, { skipExamples: true });
421
+ // No usable inline manifest → a plain document space, applied deterministically (no AI).
422
+ await applyGeneratedWorkspace(orgId, wsId, docSpaceManifest(wsId, name), { skipExamples: true });
311
423
  } catch { /* leave it manifest-less; the owner can set it up manually */ }
312
424
  }, []);
313
425
 
314
- const applyResult = useCallback(async () => {
426
+ const applyResult = useCallback(async (mode = 'off') => {
315
427
  setApplying(true);
316
428
  try {
317
429
  const json = extractJson(result);
@@ -326,6 +438,8 @@ export default function SecretaryView() {
326
438
  }
327
439
  const newBrain = { purpose: b.purpose, rules };
328
440
  const isNew = hireMode === 'new' || !active;
441
+ setSetupStep({ phase: 'structure' }); // live progress: building the space + workspaces
442
+ let fillTargets = []; // [{ id, name }] of new workspaces to fill one at a time
329
443
 
330
444
  let next;
331
445
  if (isNew) {
@@ -347,6 +461,7 @@ export default function SecretaryView() {
347
461
  }
348
462
  // Design + apply each workspace's manifest in parallel so they come out usable, not empty shells.
349
463
  await Promise.all(created.map((c) => genAndApplyManifest(orgId, c.wsId, c.ws)));
464
+ fillTargets = created.map((c) => ({ id: c.wsId, name: String((c.ws && c.ws.name) || '').trim() || c.wsId }));
350
465
  }
351
466
  // B3: seed the brain-proposed quick actions — active on hire (run verbs are dropped by the sanitizer).
352
467
  const quickActions = sanitizeQuickActions(json.quickActions, 'brain', 'active');
@@ -357,7 +472,10 @@ export default function SecretaryView() {
357
472
  // the owner ticking the linked goals by hand after setup.
358
473
  const goalIds = await seedGoals(json.goals, ctxId, org.name);
359
474
  const strategy = linkMilestoneGoals(normalizeStrategy(json.strategy), goalIds);
360
- const ctx = { id: ctxId, name: org.name, brain: newBrain, organismId: orgId || null, organismName: org.name, workspaces: wsSummary, policy: defaultPolicy(), brainHistory: [], quickActions, strategy };
475
+ // Autonomy chosen in the setup step controls only how active the DAILY tick is (it watches, briefs,
476
+ // and proposes Work Briefs — it never authors content itself, so there is no "fill" band any more).
477
+ const policy = defaultPolicy();
478
+ const ctx = { id: ctxId, name: org.name, brain: newBrain, organismId: orgId || null, organismName: org.name, workspaces: wsSummary, policy, brainHistory: [], quickActions, strategy };
361
479
  next = { contexts: [...contexts, ctx], activeContextId: ctx.id };
362
480
  } else {
363
481
  // Re-run on the active context (reshape): update its brain, snapshot the old one, KEEP its
@@ -391,31 +509,44 @@ export default function SecretaryView() {
391
509
  await persistConfig(next);
392
510
  await syncDirectives(newBrain);
393
511
  window.dispatchEvent(new CustomEvent('aimeat-live-update')); // refresh goals/learning + cards
394
- showToast(t('secretary.hireDone'));
395
- setResult(''); setNeeds(''); setShowHire(false);
396
- // Fill the brand-new workspaces with REAL content right at handshake (documents first), and drop any
397
- // that stay empty ("empty workspace = useless"). A slow model can take a while — long timeout, no retry
398
- // (the server already retries flaky models). Only on a fresh hire, so it never touches existing content.
399
- if (isNew) {
400
- showToast(t('secretary.fillingWorkspaces'));
401
- try {
402
- const r = await api('/v1/secretary/author-now', { method: 'POST', body: JSON.stringify({}), timeoutMs: 1_800_000, retries: 0 });
403
- const d = (r && r.data) || {};
404
- const filled = (d.authored || []).length;
405
- const removed = (d.removedEmptyWorkspaces || []).length;
406
- showToast(`${t('secretary.workspacesFilled')} (${filled})${removed ? ` — ${t('secretary.emptyRemoved')}: ${removed}` : ''}`);
407
- window.dispatchEvent(new CustomEvent('aimeat-live-update'));
408
- } catch (e) {
409
- showToast(`${t('secretary.fillError')}: ${e.message}`, true);
410
- }
512
+ // The Secretary NO LONGER authors content one-shot at handshake (the cheap model hallucinated and went
513
+ // "onto the Builders' turf"). Instead it now proposes grounded Work Briefs for the new (empty)
514
+ // workspaces — heavy work a Builder (a connected big AI via the appdev MCP tools) executes. Fast +
515
+ // deterministic (no slow model call); the dashboard's brief tray then offers "Open in Claude Desktop"
516
+ // / "Send to a connected Builder". Only on a fresh hire, so it never touches existing content.
517
+ if (isNew && fillTargets.length) {
518
+ setSetupStep({ phase: 'fill', done: 0, total: fillTargets.length, name: fillTargets[0].name });
519
+ const r = await api('/v1/secretary/brief', { method: 'POST', body: '{}', timeoutMs: 120000, retries: 1 }).catch(() => null);
520
+ const proposed = (r && r.data && typeof r.data.proposed === 'number') ? r.data.proposed : 0;
521
+ setSetupStep({ phase: 'done', done: fillTargets.length, total: fillTargets.length });
522
+ window.dispatchEvent(new CustomEvent('aimeat-live-update')); // briefs show up in the tray live
523
+ showToast(proposed ? `${t('secretary.briefsReady')} (${proposed})` : t('secretary.hireDone'));
524
+ } else {
525
+ showToast(t('secretary.hireDone'));
526
+ }
527
+ // If the owner chose an autonomous mode, turn the daily check-in ON for them — so it actually keeps
528
+ // working on its own (the band alone does nothing without a schedule). 'off' stays fully manual.
529
+ if (isNew && mode !== 'off') {
530
+ await apiPost('/v1/schedules', { kind: 'secretary', cron: '0 8 * * *', display_name: t('secretary.auto.scheduleName') }).catch(() => {});
411
531
  }
532
+ setResult(''); setNeeds(''); setShowHire(false);
412
533
  } catch (e) {
413
534
  showToast(`${t('secretary.hireError')}: ${e.message}`, true);
414
535
  } finally {
415
- setApplying(false);
536
+ setApplying(false); setSetupStep(null);
416
537
  }
417
538
  }, [result, hireMode, active, contexts, config, persistConfig, syncDirectives, seedGoals, genAndApplyManifest, showToast]);
418
539
 
540
+ // "Set up my Secretary" no longer runs immediately — it first asks (one step, up front) HOW autonomous
541
+ // the owner wants it, explained in plain words, so nobody stumbles into Act bands later. The chosen mode
542
+ // is passed to applyResult. Only for a brand-new hire; re-running an existing context keeps its policy.
543
+ const startSetup = useCallback(() => {
544
+ if (!result.trim()) return;
545
+ try { extractJson(result); } catch { showToast(t('secretary.hireBadShape'), true); return; }
546
+ if (hireMode === 'new' || !active) { setSetupMode('draft'); setChooseMode(true); } else { applyResult('off'); }
547
+ }, [result, hireMode, active, applyResult, showToast]);
548
+ const confirmSetup = useCallback(() => { setChooseMode(false); applyResult(setupMode); }, [applyResult, setupMode]);
549
+
419
550
  // C2 — direct brain editor: edit the active context's purpose + rules in place (no AI re-run).
420
551
  const startBrainEdit = useCallback(() => {
421
552
  if (!active) return;
@@ -811,6 +942,9 @@ ${SECRETARY_AIMEAT_PRIMER}`;
811
942
  persistConfig({ ...config, contexts: contexts.map((c) => (c.id === active.id ? updated : c)) });
812
943
  };
813
944
  const setBand = (capId, band) => updateActivePolicy({ bands: { ...policy.bands, [capId]: band } });
945
+ // One autonomy toggle: 'suggest' (surface only) | 'assist' (handle the small stuff). Sets the band preset
946
+ // underneath, so the band machinery + parity tests are unchanged — the toggle is just the simple surface.
947
+ const setAutonomy = (level) => updateActivePolicy({ bands: autonomyPreset(level) });
814
948
  const toggleStop = () => updateActivePolicy({ stopSpending: !policy.stopSpending });
815
949
  const setBudget = (v) => updateActivePolicy({ dailyMorselBudget: v === '' ? null : Math.max(0, Math.floor(Number(v) || 0)) });
816
950
 
@@ -898,7 +1032,7 @@ ${SECRETARY_AIMEAT_PRIMER}`;
898
1032
  ? html`<div class="sec-empty">${hasOpenRouterKey ? t('secretary.provisioning') : t('secretary.notReady')}</div>`
899
1033
  : html`
900
1034
  ${hired ? contextSwitcher({ contexts, activeId, switchContext, openAdd }) : null}
901
- ${showHirePanel ? hirePanel({ firstEver, hireMode, owner, current: hireMode === 'edit' ? active : null, needs, setNeeds, result, setResult, applying, generating, generateInApp, applyResult, onCancel: cancelHire }) : null}
1035
+ ${showHirePanel ? hirePanel({ firstEver, hireMode, owner, current: hireMode === 'edit' ? active : null, needs, setNeeds, result, setResult, applying, setupStep, generating, generateInApp, applyResult: startSetup, onCancel: cancelHire }) : null}
902
1036
  ${hired && !showHire && active ? html`
903
1037
  ${/* Quick-action row (core verbs; dynamic actions arrive in B3) */ ''}
904
1038
  ${quickActionRow({ items: [
@@ -917,6 +1051,9 @@ ${SECRETARY_AIMEAT_PRIMER}`;
917
1051
  ${/* Today — full-width status band, always on top */ ''}
918
1052
  ${dashStatus({ reliability, budgetInfo, schedule: auto.schedule, lastScan, stale, onReconcile: reconcile, scanning })}
919
1053
 
1054
+ ${/* Heavy work to hand off — the Work Brief tray (the light-vs-heavy seam made physical). */ ''}
1055
+ ${briefTrayCard({ briefs, builders, dispatching, onDispatch: dispatchBrief, onResolve: resolveBrief })}
1056
+
920
1057
  ${/* Customizable two-column dashboard (pin to column / reorder / hide per card; persisted). */ ''}
921
1058
  ${(() => {
922
1059
  const nodes = {
@@ -966,7 +1103,7 @@ ${SECRETARY_AIMEAT_PRIMER}`;
966
1103
  crewSummary: crew.agents && crew.agents.length ? `${crew.agents.length} ${t('secretary.dash.crewAgents')}` : '' })}
967
1104
  ${manageOpen ? html`
968
1105
  ${brainCard({ brain, active, openEdit, brainDraft, setBrainDraft, startBrainEdit, saveBrain, cancelBrainEdit, savingBrain })}
969
- ${operatingCard({ policy, toggleStop, setBudget, setBand })}
1106
+ ${operatingCard({ policy, toggleStop, setBudget, setBand, setAutonomy })}
970
1107
  ${!strategy ? html`<section class="sec-card">
971
1108
  <h2 class="sec-h2">${t('secretary.strat.title')}</h2>
972
1109
  <p class="sec-hint">${t('secretary.strat.enableHint')}</p>
@@ -987,6 +1124,37 @@ ${SECRETARY_AIMEAT_PRIMER}`;
987
1124
  ` : null}
988
1125
  ` : null}`}
989
1126
  ${calEvent ? html`<${CalendarEventDialog} event=${calEvent} onClose=${() => setCalEvent(null)} triggers=${{ update: trig.updateTrigger, togglePause: trig.togglePause, remove: trig.removeTrigger }} workflows=${trig.workflows} specialists=${spec.list} routines=${{ setCadence: next.setRoutineCadence, setStatus: next.setRoutineStatus }} tick=${{ toggle: auto.toggleTick, run: auto.runTick }} feed=${{ remove: auto.deleteFeedItem }} />` : null}
1127
+ ${chooseMode ? html`
1128
+ <div class="sec-setup-overlay" onClick=${(e) => { if (e.target === e.currentTarget) setChooseMode(false); }}>
1129
+ <div class="sec-setup-box sec-mode-box">
1130
+ <h3 class="sec-h2">${t('secretary.mode.title')}</h3>
1131
+ <p class="sec-desc">${t('secretary.mode.intro')}</p>
1132
+ ${[['draft', t('secretary.mode.draftTitle'), t('secretary.mode.draftDesc')], ['act', t('secretary.mode.actTitle'), t('secretary.mode.actDesc')], ['off', t('secretary.mode.offTitle'), t('secretary.mode.offDesc')]].map(([val, title, desc]) => html`
1133
+ <label class=${'sec-mode-opt' + (setupMode === val ? ' sec-mode-opt--on' : '')}>
1134
+ <input type="radio" name="setupmode" checked=${setupMode === val} onChange=${() => setSetupMode(val)} />
1135
+ <span><span class="sec-mode-opt-t">${title}</span><span class="sec-desc">${desc}</span></span>
1136
+ </label>`)}
1137
+ <p class="sec-hint">${t('secretary.mode.changeLater')}</p>
1138
+ <div class="sec-actions">
1139
+ <button class="btn-ghost btn-sm" onClick=${() => setChooseMode(false)}>${t('secretary.cancel')}</button>
1140
+ <button class="btn-primary" onClick=${confirmSetup}>${t('secretary.apply')}</button>
1141
+ </div>
1142
+ </div>
1143
+ </div>` : null}
1144
+ ${applying && setupStep ? (() => {
1145
+ // Top-level setup-progress overlay — stays visible across the hire→dashboard switch (persistConfig
1146
+ // makes the Secretary "exist" before the slow fill, so a panel-local progress view would unmount).
1147
+ const s = setupStep, pct = s.total ? Math.round(((s.done || 0) / s.total) * 100) : null;
1148
+ const msg = s.phase === 'fill'
1149
+ ? `${t('secretary.stepFilling')} ${(s.done || 0) + 1}/${s.total}${s.name ? ' · ' + s.name : ''}`
1150
+ : (s.phase === 'done' ? t('secretary.stepDone') : t('secretary.stepStructure'));
1151
+ return html`<div class="sec-setup-overlay"><div class="sec-setup-box">
1152
+ <h3 class="sec-h2">${t('secretary.settingUpTitle')}</h3>
1153
+ <div class="sec-setup-row"><span class="sec-spin"></span><span>${msg}</span></div>
1154
+ ${pct != null ? html`<div class="sec-progress-bar"><div class="sec-progress-fill" style=${`width:${pct}%`}></div></div>` : null}
1155
+ <p class="sec-desc">${t('secretary.settingUpHint')}</p>
1156
+ </div></div>`;
1157
+ })() : null}
990
1158
  <${ToastContainer} />
991
1159
  </div>`;
992
1160
  }
@@ -11,6 +11,8 @@
11
11
  * v1.3.0 -- 2026-06-10 -- organism_list also fetches ?member={owner} and merges (was public-only:
12
12
  * an agent's join answered ALREADY_MEMBER while the list omitted its own private organisms — the
13
13
  * agent could not find its home). Mirrors the server-MCP tool; rows carry is_member.
14
+ * v1.4.0 -- 2026-06-30 -- MCP drift fix: add `archived` enum (exclude/include/only) to
15
+ * organism_search to match the server MCP surface; maps to the REST ?archived/?includeArchived flags.
14
16
  */
15
17
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
16
18
  import type { AgentRegistry } from '../../agent-registry.js';
@@ -1 +1 @@
1
- {"version":3,"file":"organisms.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/connect/mcp/tools/organisms.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAI7D,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAgLpF"}
1
+ {"version":3,"file":"organisms.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/connect/mcp/tools/organisms.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAI7D,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAsLpF"}
@@ -145,10 +145,18 @@ export function registerOrganismsTools(mcp, registry) {
145
145
  organism_id: z.string().describe('Organism identifier'),
146
146
  q: z.string().describe('Search text (min 2 characters)'),
147
147
  ws: z.string().optional().describe('Optional: limit to a single workspace id'),
148
- }, annotationsFor('aimeat_organism_search'), async ({ organism_id, q, ws }) => {
148
+ archived: z.enum(['exclude', 'include', 'only']).optional().describe('Archive scope: exclude (default), only (archive search), or include (both)'),
149
+ }, annotationsFor('aimeat_organism_search'), async ({ organism_id, q, ws, archived }) => {
149
150
  const params = new URLSearchParams({ q });
150
151
  if (ws)
151
152
  params.set('ws', ws);
153
+ // The REST route reads archive scope from two flags: ?archived=only (archive
154
+ // search) and ?includeArchived=true (both). Map the enum to those; 'exclude'
155
+ // (the default) sends neither.
156
+ if (archived === 'only')
157
+ params.set('archived', 'only');
158
+ else if (archived === 'include')
159
+ params.set('includeArchived', 'true');
152
160
  const resp = await client.get(`/v1/organisms/${encodeURIComponent(organism_id)}/search?${params.toString()}`);
153
161
  return { content: [{ type: 'text', text: JSON.stringify(resp.data ?? resp, null, 2) }], ...(resp.ok === false ? { isError: true } : {}) };
154
162
  });
@@ -1 +1 @@
1
- {"version":3,"file":"organisms.js","sourceRoot":"","sources":["../../../../../../src/cli/connect/mcp/tools/organisms.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"organisms.js","sourceRoot":"","sources":["../../../../../../src/cli/connect/mcp/tools/organisms.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,9 @@
7
7
  * them here -- not in the consumers.
8
8
  * @version-history
9
9
  * v1.0.0 -- 2026-05-28 -- Initial extraction from auth.ts/skill-bundle.ts duplication.
10
+ * v1.1.0 -- 2026-06-30 -- Add anti-fabrication rule (only five aimeat_onboarding_* tools exist;
11
+ * drive other steps via each step's howTo.tool from aimeat_onboarding_status;
12
+ * stop at summary.completable).
10
13
  */
11
14
  /** Canonical Hello Integration MCP tool sequence, in execution order. */
12
15
  export declare const HELLO_INTEGRATION_TOOL_SEQUENCE: ReadonlyArray<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"onboarding-prompt.d.ts","sourceRoot":"","sources":["../../../../src/cli/connect/onboarding-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,yEAAyE;AACzE,eAAO,MAAM,+BAA+B,EAAE,aAAa,CAAC,MAAM,CAgBjE,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,+BAA+B,IAAI,MAAM,CAuBxD"}
1
+ {"version":3,"file":"onboarding-prompt.d.ts","sourceRoot":"","sources":["../../../../src/cli/connect/onboarding-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,yEAAyE;AACzE,eAAO,MAAM,+BAA+B,EAAE,aAAa,CAAC,MAAM,CAgBjE,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,+BAA+B,IAAI,MAAM,CA2BxD"}