@formigio/fazemos-cli 0.10.67 → 0.10.75

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 (53) hide show
  1. package/dist/approvals.d.ts +1 -1
  2. package/dist/approvals.js +50 -19
  3. package/dist/approvals.js.map +1 -1
  4. package/dist/commands/preflight.d.ts +41 -0
  5. package/dist/commands/preflight.js +706 -0
  6. package/dist/commands/preflight.js.map +1 -0
  7. package/dist/commands/provision.d.ts +29 -0
  8. package/dist/commands/provision.js +382 -0
  9. package/dist/commands/provision.js.map +1 -0
  10. package/dist/index.js +124 -5
  11. package/dist/index.js.map +1 -1
  12. package/dist/pause.js +42 -11
  13. package/dist/pause.js.map +1 -1
  14. package/dist/preflight/repoRead.d.ts +65 -0
  15. package/dist/preflight/repoRead.js +194 -0
  16. package/dist/preflight/repoRead.js.map +1 -0
  17. package/dist/preflight/roster.d.ts +65 -0
  18. package/dist/preflight/roster.js +153 -0
  19. package/dist/preflight/roster.js.map +1 -0
  20. package/dist/preflight/row1_member.d.ts +8 -0
  21. package/dist/preflight/row1_member.js +64 -0
  22. package/dist/preflight/row1_member.js.map +1 -0
  23. package/dist/preflight/row2_roleRegistration.d.ts +18 -0
  24. package/dist/preflight/row2_roleRegistration.js +156 -0
  25. package/dist/preflight/row2_roleRegistration.js.map +1 -0
  26. package/dist/preflight/row3_persona.d.ts +24 -0
  27. package/dist/preflight/row3_persona.js +92 -0
  28. package/dist/preflight/row3_persona.js.map +1 -0
  29. package/dist/preflight/row3_playbook.d.ts +30 -0
  30. package/dist/preflight/row3_playbook.js +142 -0
  31. package/dist/preflight/row3_playbook.js.map +1 -0
  32. package/dist/preflight/row3_rolesJson.d.ts +12 -0
  33. package/dist/preflight/row3_rolesJson.js +38 -0
  34. package/dist/preflight/row3_rolesJson.js.map +1 -0
  35. package/dist/preflight/row3_workspace.d.ts +24 -0
  36. package/dist/preflight/row3_workspace.js +253 -0
  37. package/dist/preflight/row3_workspace.js.map +1 -0
  38. package/dist/preflight/row4_ssm.d.ts +57 -0
  39. package/dist/preflight/row4_ssm.js +235 -0
  40. package/dist/preflight/row4_ssm.js.map +1 -0
  41. package/dist/preflight/row5_workerLambdaWakeConfig.d.ts +20 -0
  42. package/dist/preflight/row5_workerLambdaWakeConfig.js +113 -0
  43. package/dist/preflight/row5_workerLambdaWakeConfig.js.map +1 -0
  44. package/dist/preflight/row6_ingest.d.ts +20 -0
  45. package/dist/preflight/row6_ingest.js +178 -0
  46. package/dist/preflight/row6_ingest.js.map +1 -0
  47. package/dist/preflight/schema.d.ts +175 -0
  48. package/dist/preflight/schema.js +62 -0
  49. package/dist/preflight/schema.js.map +1 -0
  50. package/dist/preflight/workerLambdas.d.ts +22 -0
  51. package/dist/preflight/workerLambdas.js +25 -0
  52. package/dist/preflight/workerLambdas.js.map +1 -0
  53. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/commands/preflight.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * F53 — `fazemos agents provision <org>/<project>/<role> --name <agent> --model <model>`
3
+ *
4
+ * Idempotent composite of provisioning layers 1–3, followed by preflight.
5
+ * Non-interactive one-shot. Provides --dry-run as the safety valve.
6
+ *
7
+ * Layers:
8
+ * 1. agents register (POST /api/agents/register) — idempotent
9
+ * 2. .fazemos/roles.json entry update + roles sync (POST /api/role-registrations/sync)
10
+ * — with pre-sync clobber guard (rul_f53_provision_never_clobbers_binding)
11
+ * 3. Verify-and-instruct only (NO scaffold) — effective persona (API), playbook, roles.json entry
12
+ *
13
+ * Ends by running `agents preflight` to show outstanding gaps (layers 4–6).
14
+ *
15
+ * Rules:
16
+ * rul_f53_provision_no_layer_3_scaffold — NEVER write persona/playbook/anchors files
17
+ * rul_f53_provision_never_clobbers_binding — lookup before sync; abort on bound_elsewhere
18
+ * rul_f53_hint_text_additive_only — hint text is separate from existing success lines
19
+ * rul_f53_row3a_verifies_effective_persona — 3a checks effective persona via API, not file presence
20
+ */
21
+ export interface ProvisionOptions {
22
+ name: string;
23
+ model: string;
24
+ dryRun?: boolean;
25
+ env?: string;
26
+ json?: boolean;
27
+ region?: string;
28
+ }
29
+ export declare function runProvision(target: string, opts: ProvisionOptions): Promise<void>;
@@ -0,0 +1,382 @@
1
+ /**
2
+ * F53 — `fazemos agents provision <org>/<project>/<role> --name <agent> --model <model>`
3
+ *
4
+ * Idempotent composite of provisioning layers 1–3, followed by preflight.
5
+ * Non-interactive one-shot. Provides --dry-run as the safety valve.
6
+ *
7
+ * Layers:
8
+ * 1. agents register (POST /api/agents/register) — idempotent
9
+ * 2. .fazemos/roles.json entry update + roles sync (POST /api/role-registrations/sync)
10
+ * — with pre-sync clobber guard (rul_f53_provision_never_clobbers_binding)
11
+ * 3. Verify-and-instruct only (NO scaffold) — effective persona (API), playbook, roles.json entry
12
+ *
13
+ * Ends by running `agents preflight` to show outstanding gaps (layers 4–6).
14
+ *
15
+ * Rules:
16
+ * rul_f53_provision_no_layer_3_scaffold — NEVER write persona/playbook/anchors files
17
+ * rul_f53_provision_never_clobbers_binding — lookup before sync; abort on bound_elsewhere
18
+ * rul_f53_hint_text_additive_only — hint text is separate from existing success lines
19
+ * rul_f53_row3a_verifies_effective_persona — 3a checks effective persona via API, not file presence
20
+ */
21
+ import { readFileSync, writeFileSync, existsSync } from 'fs';
22
+ import { join as pathJoin } from 'path';
23
+ import chalk from 'chalk';
24
+ import { api, resolveOrgIdMaybeSlug } from '../api.js';
25
+ import { findLocalRegistry, buildRolesSyncPayload } from '../dispatch.js';
26
+ import { getEnv } from '../config.js';
27
+ import { runPreflight } from './preflight.js';
28
+ /**
29
+ * Print a per-layer status line:
30
+ * = layer 1 member exists (skipped)
31
+ * + layer 2 role_registration created
32
+ * ! layer 3a persona — MISSING at roles/project-manager.md
33
+ */
34
+ function printLayer(s) {
35
+ const icon = s.action === '=' ? chalk.gray('=') :
36
+ s.action === '+' ? chalk.green('+') :
37
+ s.action === '!' ? chalk.red('!') :
38
+ chalk.cyan('?');
39
+ console.log(` ${icon} layer ${s.layer} ${s.label}: ${s.detail}`);
40
+ }
41
+ export async function runProvision(target, opts) {
42
+ const parts = target.split('/');
43
+ if (parts.length !== 3) {
44
+ console.error(chalk.red(`Invalid target '${target}'. Use <org>/<project>/<role>.`));
45
+ process.exit(1);
46
+ }
47
+ const [orgSlug, projectSlug, roleSlug] = parts;
48
+ const envConfig = getEnv();
49
+ const envName = opts.env ?? envConfig.name;
50
+ const agentName = opts.name;
51
+ const model = opts.model;
52
+ if (!opts.json) {
53
+ console.log(chalk.cyan(`\nProvision: ${orgSlug} / ${projectSlug} / ${roleSlug}`));
54
+ console.log(chalk.gray(` Agent: ${agentName} Model: ${model} Env: ${envName}`));
55
+ if (opts.dryRun) {
56
+ console.log(chalk.yellow(' [DRY RUN — no changes will be made]\n'));
57
+ }
58
+ else {
59
+ console.log('');
60
+ }
61
+ }
62
+ // ── Resolve org + project ─────────────────────────────────────────────────
63
+ let orgId;
64
+ let projectId;
65
+ try {
66
+ orgId = await resolveOrgIdMaybeSlug(orgSlug);
67
+ const projData = (await api('GET', `/api/organizations/${orgId}/projects?status=active`, undefined, { noProjectHeader: true }));
68
+ const project = (projData.projects ?? []).find((p) => p.slug === projectSlug);
69
+ if (!project)
70
+ throw new Error(`Project '${projectSlug}' not found in org '${orgSlug}'.`);
71
+ projectId = project.id;
72
+ }
73
+ catch (err) {
74
+ console.error(chalk.red(`Error resolving org/project: ${err?.message ?? String(err)}`));
75
+ process.exit(1);
76
+ }
77
+ const statuses = [];
78
+ // ── Layer 1 — agents register (idempotent) ───────────────────────────────
79
+ if (opts.dryRun) {
80
+ statuses.push({ layer: 1, label: 'agent member + credential', action: '?', detail: `would register '${agentName}' with model=${model} and provision credential` });
81
+ printLayer(statuses[statuses.length - 1]);
82
+ }
83
+ else {
84
+ try {
85
+ // Check if agent already exists
86
+ const membersData = (await api('GET', `/api/organizations/${orgId}/members?type=agent`, undefined, { noProjectHeader: true }));
87
+ const norm = (s) => s.toLowerCase().replace(/[-_\s]+/g, ' ').trim();
88
+ const existing = (membersData.members ?? []).find((m) => m.member_type === 'agent' && norm(m.display_name) === norm(agentName));
89
+ if (existing) {
90
+ // Agent exists — check if role is in its config
91
+ const roles = existing.agent_config?.roles ?? [];
92
+ if (roles.includes(roleSlug)) {
93
+ statuses.push({ layer: 1, label: 'agent member + credential', action: '=', detail: `'${agentName}' exists (id=${existing.id}), role '${roleSlug}' already in config` });
94
+ }
95
+ else {
96
+ // Update roles — re-register with new role list
97
+ await api('POST', '/api/agents/register', {
98
+ agents: [{
99
+ displayName: agentName,
100
+ roles: [...roles, roleSlug],
101
+ config: { model },
102
+ provisionCredential: false,
103
+ }],
104
+ });
105
+ statuses.push({ layer: 1, label: 'agent member + credential', action: '+', detail: `'${agentName}' updated with role '${roleSlug}' added` });
106
+ }
107
+ }
108
+ else {
109
+ // Register new agent + provision credential
110
+ const data = (await api('POST', '/api/agents/register', {
111
+ agents: [{
112
+ displayName: agentName,
113
+ roles: [roleSlug],
114
+ config: { model },
115
+ provisionCredential: true,
116
+ credentialProjectId: projectId,
117
+ }],
118
+ }));
119
+ const agentResult = data.agents?.[0];
120
+ const credStatus = agentResult?.credential?.status;
121
+ let detail = `'${agentName}' registered (id=${agentResult?.member_id ?? 'unknown'})`;
122
+ if (credStatus === 'minted' && agentResult?.credential?.rawKey) {
123
+ detail += `\n ${chalk.yellow('⚠ API Key (save now — shown once): ' + agentResult.credential.rawKey)}`;
124
+ detail += `\n Key ID: ${agentResult.credential?.apiKeyId ?? 'unknown'}`;
125
+ }
126
+ else if (credStatus === 'exists') {
127
+ detail += ' — credential already provisioned (use --force-rotate to rotate)';
128
+ }
129
+ statuses.push({ layer: 1, label: 'agent member + credential', action: '+', detail });
130
+ }
131
+ }
132
+ catch (err) {
133
+ statuses.push({ layer: 1, label: 'agent member + credential', action: '!', detail: `Error: ${err?.message ?? String(err)}` });
134
+ printLayer(statuses[statuses.length - 1]);
135
+ console.error(chalk.red('Layer 1 failed — cannot continue.'));
136
+ process.exit(1);
137
+ }
138
+ printLayer(statuses[statuses.length - 1]);
139
+ }
140
+ // ── Layer 2 — .fazemos/roles.json + roles sync ────────────────────────────
141
+ const localRegistry = findLocalRegistry(process.cwd());
142
+ if (!localRegistry) {
143
+ const s = { layer: 2, label: 'roles.json entry + role_registration', action: '!', detail: 'No .fazemos/roles.json found in cwd or any parent. Run from inside a workspace repo.' };
144
+ statuses.push(s);
145
+ printLayer(s);
146
+ console.error(chalk.red('Layer 2 failed — cannot continue.'));
147
+ process.exit(1);
148
+ }
149
+ {
150
+ let lookupData = null;
151
+ try {
152
+ const lookupParams = new URLSearchParams({
153
+ workspace: localRegistry.workspace,
154
+ role_slug: roleSlug,
155
+ org_id: orgId,
156
+ });
157
+ lookupData = (await api('GET', `/api/role-registrations/lookup?${lookupParams.toString()}`, undefined, { noProjectHeader: true }));
158
+ }
159
+ catch (err) {
160
+ const status = err?.status ?? 0;
161
+ if (status === 404) {
162
+ console.error(chalk.red(`Layer 2 aborted — rul_f53_provision_never_clobbers_binding:\n` +
163
+ ` The lookup endpoint (GET /api/role-registrations/lookup) is not deployed on env '${envName}'.\n` +
164
+ ` Provision cannot verify the existing binding and will not risk a clobber.\n` +
165
+ ` Deploy fazemos-api to '${envName}' first, then retry.`));
166
+ }
167
+ else {
168
+ console.error(chalk.red(`Layer 2 aborted — rul_f53_provision_never_clobbers_binding:\n` +
169
+ ` Binding could not be verified (API error: ${err?.message ?? String(err)}) — sync not attempted.\n` +
170
+ ` Resolve the API error and retry.`));
171
+ }
172
+ if (opts.dryRun) {
173
+ console.error(chalk.yellow(' [DRY RUN] Would abort here — binding verification failed; sync would not be attempted.'));
174
+ }
175
+ process.exit(1);
176
+ }
177
+ // Evaluate the lookup result for binding conflicts
178
+ const reg = lookupData?.registration;
179
+ if (lookupData?.found && reg && reg.active) {
180
+ const sameOrg = reg.org_id === orgId;
181
+ const sameProject = reg.project_id === projectId;
182
+ if (!sameOrg || !sameProject) {
183
+ console.error(chalk.red(`${opts.dryRun ? '[DRY RUN] Would abort — ' : 'Layer 2 aborted — '}` +
184
+ `rul_f53_provision_never_clobbers_binding:\n` +
185
+ ` role_registrations row for (workspace='${localRegistry.workspace}', role_slug='${roleSlug}') ` +
186
+ `is already bound to org=${reg.org_slug}, project=${reg.project_slug ?? 'null'}.\n` +
187
+ ` Running roles sync from '${projectSlug}' would clobber this binding via UNIQUE upsert.\n` +
188
+ ` See ROLE-REGISTRY-PROJECT-ADDRESSABILITY. Provision aborted.`));
189
+ process.exit(1);
190
+ }
191
+ // r3 penta-state: check resolver_ambiguous / resolver_mismatch
192
+ const candidates = lookupData.resolver_candidates ?? null;
193
+ if (candidates !== null && candidates.length > 1) {
194
+ console.error(chalk.red(`${opts.dryRun ? '[DRY RUN] Would abort — ' : 'Layer 2 aborted — '}` +
195
+ `resolver_ambiguous:\n` +
196
+ ` ${candidates.length} active rows for (role_slug='${roleSlug}', org_id=${orgSlug}).\n` +
197
+ ` Running roles sync would create or re-point a row in an ambiguous resolver state.\n` +
198
+ ` See ROLE-REGISTRY-PROJECT-ADDRESSABILITY Stage 1 + Stage 0. Provision aborted.`));
199
+ process.exit(1);
200
+ }
201
+ if (candidates !== null && candidates.length === 1 && reg && candidates[0].id !== reg.id) {
202
+ console.error(chalk.red(`${opts.dryRun ? '[DRY RUN] Would abort — ' : 'Layer 2 aborted — '}` +
203
+ `resolver_mismatch:\n` +
204
+ ` Schema-key row id=${reg.id} ≠ resolver-candidate row id=${candidates[0].id}.\n` +
205
+ ` See ROLE-REGISTRY-PROJECT-ADDRESSABILITY. Provision aborted.`));
206
+ process.exit(1);
207
+ }
208
+ }
209
+ }
210
+ // Update/add the role entry in roles.json
211
+ if (opts.dryRun) {
212
+ const hasEntry = !!localRegistry.roles[roleSlug];
213
+ statuses.push({
214
+ layer: 2,
215
+ label: 'roles.json entry + role_registration',
216
+ action: '?',
217
+ detail: hasEntry
218
+ ? `roles.json already has '${roleSlug}' — would verify filler.identity matches '${agentName}'`
219
+ : `would add '${roleSlug}' to roles.json with filler.identity='${agentName}'`,
220
+ });
221
+ printLayer(statuses[statuses.length - 1]);
222
+ }
223
+ else {
224
+ const existingEntry = localRegistry.roles[roleSlug];
225
+ if (!existingEntry) {
226
+ // Add new entry
227
+ const registryPath = localRegistry._registryPath;
228
+ const raw = JSON.parse(readFileSync(registryPath, 'utf-8'));
229
+ raw.roles = raw.roles ?? {};
230
+ // Derive conventional paths
231
+ const roleDir = `projects/${projectSlug}/roles/${roleSlug}`;
232
+ raw.roles[roleSlug] = {
233
+ filler: { type: 'agent', identity: agentName },
234
+ subagent: agentName,
235
+ inbox: `${roleDir}/inbox/`,
236
+ briefs: `${roleDir}/briefs/`,
237
+ persona: `projects/${projectSlug}/roles/${roleSlug}.md`,
238
+ scope: 'project',
239
+ };
240
+ writeFileSync(registryPath, JSON.stringify(raw, null, 2) + '\n', 'utf-8');
241
+ statuses.push({ layer: 2, label: 'roles.json entry', action: '+', detail: `Added '${roleSlug}' to ${registryPath}` });
242
+ }
243
+ else if (existingEntry.filler?.identity !== agentName) {
244
+ // Update filler.identity
245
+ const registryPath = localRegistry._registryPath;
246
+ const raw = JSON.parse(readFileSync(registryPath, 'utf-8'));
247
+ raw.roles[roleSlug].filler.identity = agentName;
248
+ raw.roles[roleSlug].subagent = agentName;
249
+ writeFileSync(registryPath, JSON.stringify(raw, null, 2) + '\n', 'utf-8');
250
+ statuses.push({ layer: 2, label: 'roles.json entry', action: '+', detail: `Updated '${roleSlug}' filler.identity to '${agentName}'` });
251
+ }
252
+ else {
253
+ statuses.push({ layer: 2, label: 'roles.json entry', action: '=', detail: `'${roleSlug}' already in roles.json with filler='${agentName}'` });
254
+ }
255
+ printLayer(statuses[statuses.length - 1]);
256
+ // Re-load registry (file may have been updated)
257
+ const updatedRegistry = findLocalRegistry(process.cwd());
258
+ if (!updatedRegistry) {
259
+ console.error(chalk.red('Could not reload registry after update.'));
260
+ process.exit(1);
261
+ }
262
+ // roles sync
263
+ try {
264
+ const payload = buildRolesSyncPayload(updatedRegistry, orgId, projectId);
265
+ const result = (await api('POST', '/api/role-registrations/sync', payload, { noProjectHeader: true }));
266
+ const failures = result.errors ?? [];
267
+ if (failures.length > 0) {
268
+ statuses.push({ layer: 2, label: 'role_registration sync', action: '!', detail: failures.map((e) => `${e.role_slug}: ${e.reason}`).join(', ') });
269
+ }
270
+ else {
271
+ statuses.push({ layer: 2, label: 'role_registration sync', action: '+', detail: `${result.synced} registration(s) upserted` });
272
+ }
273
+ }
274
+ catch (err) {
275
+ statuses.push({ layer: 2, label: 'role_registration sync', action: '!', detail: `Sync error: ${err?.message ?? String(err)}` });
276
+ }
277
+ printLayer(statuses[statuses.length - 1]);
278
+ }
279
+ // ── Layer 3 — verify-and-instruct (NEVER scaffold) ───────────────────────
280
+ // Reload registry for the latest state
281
+ const latestRegistry = findLocalRegistry(process.cwd());
282
+ const roleEntry = latestRegistry?.roles[roleSlug];
283
+ const roleDir = roleEntry?.inbox
284
+ ? roleEntry.inbox.replace(/\/+$/, '').replace(/\/inbox$/, '')
285
+ : `projects/${projectSlug}/roles/${roleSlug}`;
286
+ const playbookPath = `${roleDir}/playbook-task.md`;
287
+ if (opts.dryRun) {
288
+ // 3a: describe the effective persona API check (per rul_f53_row3a_verifies_effective_persona)
289
+ statuses.push({
290
+ layer: 3, label: '3a persona (effective)', action: '?',
291
+ detail: `would verify effective persona for '${agentName}' via GET /api/agents/:name ` +
292
+ `(non-empty systemPrompt check — not file presence; per rul_f53_row3a_verifies_effective_persona)`,
293
+ });
294
+ statuses.push({ layer: 3, label: '3b playbook', action: '?', detail: `would check ${playbookPath} (no scaffold — must be authored manually)` });
295
+ statuses.push({ layer: 3, label: '3c roles.json entry', action: '?', detail: `would check .fazemos/roles.json has '${roleSlug}' with filler` });
296
+ for (const s of statuses.slice(-3))
297
+ printLayer(s);
298
+ }
299
+ else {
300
+ // 3a: effective persona (r3.2 — API check, not file presence)
301
+ // Aligns with rul_f53_row3a_verifies_effective_persona and preflight row3a.
302
+ // Rationale: a docs/agents/<name>.md file may exist but be empty (BUG160), causing the
303
+ // F18 file layer to clobber the DB systemPrompt with "". File presence alone is
304
+ // insufficient — we must check what the agent runtime actually receives.
305
+ try {
306
+ const agentDetail = (await api('GET', `/api/organizations/${orgId}/projects/${projectId}/agents/${encodeURIComponent(agentName)}`, undefined, { noProjectHeader: true }));
307
+ const systemPrompt = agentDetail.agent?.effective_config?.systemPrompt ?? '';
308
+ const trimmed = systemPrompt.trim();
309
+ if (trimmed.length > 0) {
310
+ statuses.push({
311
+ layer: 3, label: '3a persona (effective)', action: '=',
312
+ detail: `effective persona for '${agentName}' is non-empty (${trimmed.length} chars — agent runtime has an operative persona)`,
313
+ });
314
+ }
315
+ else {
316
+ const hasRoleDoc = agentDetail.agent?.role_doc_path != null;
317
+ const roleDocPath = agentDetail.agent?.role_doc_path;
318
+ statuses.push({
319
+ layer: 3, label: '3a persona (effective)', action: '!',
320
+ detail: hasRoleDoc
321
+ ? `EMPTY: effective persona is empty — F18 file at ${roleDocPath} is empty or whitespace-only (BUG160). ` +
322
+ `Delete the file to fall through to the DB systemPrompt, or author non-empty persona content.`
323
+ : `EMPTY: effective persona is empty — author docs/agents/${agentName}.md or set DB systemPrompt via ` +
324
+ `\`fazemos agents update-config\` (BUG161).`,
325
+ });
326
+ }
327
+ }
328
+ catch (err) {
329
+ const status = err?.status ?? 0;
330
+ if (status === 404) {
331
+ // Agent not visible yet — may have just been created in layer 1
332
+ statuses.push({
333
+ layer: 3, label: '3a persona (effective)', action: '?',
334
+ detail: `Agent '${agentName}' not visible via API yet (404) — layer 1 may have just created it. ` +
335
+ `Re-run preflight once the API reflects the new member.`,
336
+ });
337
+ }
338
+ else {
339
+ statuses.push({
340
+ layer: 3, label: '3a persona (effective)', action: '!',
341
+ detail: `API error checking effective persona (HTTP ${status}): ${err?.message ?? String(err)}`,
342
+ });
343
+ }
344
+ }
345
+ printLayer(statuses[statuses.length - 1]);
346
+ // 3b: playbook file
347
+ const hasPlaybook = existsSync(pathJoin(latestRegistry?._workspaceRoot ?? process.cwd(), playbookPath)) ||
348
+ existsSync(pathJoin(latestRegistry?._workspaceRoot ?? process.cwd(), `${roleDir}/playbook.md`));
349
+ if (hasPlaybook) {
350
+ statuses.push({ layer: 3, label: '3b playbook', action: '=', detail: `${playbookPath} exists` });
351
+ }
352
+ else {
353
+ statuses.push({
354
+ layer: 3, label: '3b playbook', action: '!',
355
+ detail: `MISSING: ${playbookPath} — must be authored manually (no scaffold). ` +
356
+ `Reference: projects/fazemos/roles/project-manager/playbook-task.md`,
357
+ });
358
+ }
359
+ printLayer(statuses[statuses.length - 1]);
360
+ // 3c: roles.json entry check (already done above but re-verify after update)
361
+ if (latestRegistry?.roles[roleSlug]?.filler?.identity) {
362
+ statuses.push({ layer: 3, label: '3c roles.json entry', action: '=', detail: `'${roleSlug}' in roles.json with filler='${latestRegistry.roles[roleSlug].filler.identity}'` });
363
+ }
364
+ else {
365
+ statuses.push({ layer: 3, label: '3c roles.json entry', action: '!', detail: `'${roleSlug}' not found or incomplete in .fazemos/roles.json` });
366
+ }
367
+ printLayer(statuses[statuses.length - 1]);
368
+ }
369
+ if (!opts.json && !opts.dryRun) {
370
+ console.log('');
371
+ console.log(chalk.cyan('Running preflight to show remaining gaps (layers 4–6)...\n'));
372
+ }
373
+ // ── Run preflight at the end ───────────────────────────────────────────────
374
+ if (!opts.dryRun) {
375
+ const exitCode = await runPreflight(`${orgSlug}/${projectSlug}/${roleSlug}`, {
376
+ json: opts.json,
377
+ region: opts.region,
378
+ });
379
+ process.exit(exitCode);
380
+ }
381
+ }
382
+ //# sourceMappingURL=provision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provision.js","sourceRoot":"","sources":["../../src/commands/provision.ts"],"names":[],"mappings":"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"}