@formigio/fazemos-cli 0.10.75 → 0.10.77
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/wake.d.ts +45 -11
- package/dist/wake.js +168 -63
- package/dist/wake.js.map +1 -1
- package/package.json +1 -1
package/dist/wake.d.ts
CHANGED
|
@@ -4,36 +4,70 @@
|
|
|
4
4
|
* Exports `registerWakeCommands(program)` which wires the following commands
|
|
5
5
|
* into the root Commander program (mirrors the trigger group pattern):
|
|
6
6
|
*
|
|
7
|
-
* fazemos wake status [--json]
|
|
8
|
-
* → GET /api/control-plane/wake
|
|
7
|
+
* fazemos wake status [--project <slug>] [--json]
|
|
8
|
+
* → GET /api/control-plane/wake
|
|
9
9
|
* Reads the allow-listed (role, auto_wakeable, allow_listed, enabled)
|
|
10
10
|
* schedule + recent wake_fires (last 50 entries).
|
|
11
|
+
* Project scope: resolved via X-Fazemos-Project-Id header (F15 pattern).
|
|
12
|
+
* If no active project and no --project flag, emits "requirement missing: project"
|
|
13
|
+
* per rul_cli_missing_input_project.
|
|
11
14
|
*
|
|
12
|
-
* fazemos wake disable --role <slug> --reason <text> [--until <iso>]
|
|
15
|
+
* fazemos wake disable --role <slug> --reason <text> [--until <iso>] [--json]
|
|
13
16
|
* → POST /api/control-plane/wake/disable { action: "disable", ... }
|
|
14
17
|
* Upserts a wake_disables row; timed (--until) or indefinite.
|
|
18
|
+
* Org-scoped: operates on (org_id, role) — NO project scope.
|
|
19
|
+
* --project is NOT accepted (addendum item 3); rejection fires client-side
|
|
20
|
+
* before any API call.
|
|
15
21
|
*
|
|
16
|
-
* fazemos wake enable --role <slug> --reason <text>
|
|
17
|
-
* → POST /api/control-plane/wake/
|
|
22
|
+
* fazemos wake enable --role <slug> --reason <text> [--json]
|
|
23
|
+
* → POST /api/control-plane/wake/enable { role }
|
|
18
24
|
* Deletes the wake_disables row (re-enables auto-wake for that role).
|
|
25
|
+
* Org-scoped: operates on (org_id, role) — NO project scope.
|
|
26
|
+
* --project is NOT accepted (addendum item 3); rejection fires client-side
|
|
27
|
+
* before any API call.
|
|
19
28
|
*
|
|
20
29
|
* Auth: disable/enable require admin/owner (same as trigger/disable).
|
|
21
30
|
* status requires any active org member.
|
|
22
|
-
*
|
|
31
|
+
*
|
|
32
|
+
* BUG159 fixes:
|
|
33
|
+
* 159-A: Output header renders scope from API response payload:
|
|
34
|
+
* "Wake schedule for <org>/<project> (N entries)"
|
|
35
|
+
* When allowlist scope (global) differs from disables scope (per-org),
|
|
36
|
+
* both are named: "allowlist: global | disables: <org_slug>".
|
|
37
|
+
* On missing org_slug (older API / error path), renders
|
|
38
|
+
* "(scope unknown)" — never substitutes the active project slug.
|
|
39
|
+
* 159-B: --project <slug> override added to wake status only.
|
|
40
|
+
* wake status uses X-Fazemos-Project-Id header (F15 pattern).
|
|
41
|
+
* "requirement missing: project" emitted when no active project and
|
|
42
|
+
* no --project flag (rul_cli_missing_input_project compliance).
|
|
43
|
+
* ADDENDUM: wake disable / wake enable REJECT --project (addendum item 3);
|
|
44
|
+
* the rejection fires client-side before any API call because silent
|
|
45
|
+
* scope IS the BUG159 defect class.
|
|
46
|
+
* 159-C: Help text names the SSM parameters and states that writes
|
|
47
|
+
* require `aws ssm put-parameter` + redeploy (no CLI write path).
|
|
23
48
|
*
|
|
24
49
|
* Spec: F36-inbox-auto-wake-tech-spec.md
|
|
25
50
|
* Manifest: cli_commands (fazemos wake status/disable/enable)
|
|
26
51
|
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
52
|
+
* SCOPE EXCEPTION (addendum 2026-08-26):
|
|
53
|
+
* wake disable / wake enable are org-scoped (PK: (org_id, role)), NOT project-scoped.
|
|
54
|
+
* They call the API with noProjectHeader: true. This is the documented exception to
|
|
55
|
+
* rul_project_header_scoping_for_new_cli — the file-head comment above names it so
|
|
56
|
+
* a future refactor cannot silently reintroduce project scoping.
|
|
32
57
|
*/
|
|
33
58
|
import type { Command } from 'commander';
|
|
34
59
|
/**
|
|
35
60
|
* Register `wake status`, `wake disable`, and `wake enable` into the root
|
|
36
61
|
* Commander program. Called from index.ts after `program` is created, alongside
|
|
37
62
|
* registerPauseCommands, registerBudgetCommands, and registerTriggerCommands.
|
|
63
|
+
*
|
|
64
|
+
* SCOPE SPLIT:
|
|
65
|
+
* - wake status: project-scoped (X-Fazemos-Project-Id header, F15 pattern).
|
|
66
|
+
* --project <slug> resolves to projectId in the header (BUG159-B).
|
|
67
|
+
* - wake disable / wake enable: org-scoped (no project header).
|
|
68
|
+
* --project flag is REJECTED client-side before any API call (addendum item 3).
|
|
69
|
+
* This is the documented exception to rul_project_header_scoping_for_new_cli.
|
|
70
|
+
* If no active project and no --project, the API returns MISSING_PROJECT_CONTEXT
|
|
71
|
+
* on status; disable/enable use req.userOrgId from auth context (no project needed).
|
|
38
72
|
*/
|
|
39
73
|
export declare function registerWakeCommands(program: Command): void;
|
package/dist/wake.js
CHANGED
|
@@ -1,38 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
* F36 — Inbox Auto-Wake: CLI command helpers.
|
|
3
|
-
*
|
|
4
|
-
* Exports `registerWakeCommands(program)` which wires the following commands
|
|
5
|
-
* into the root Commander program (mirrors the trigger group pattern):
|
|
6
|
-
*
|
|
7
|
-
* fazemos wake status [--json]
|
|
8
|
-
* → GET /api/control-plane/wake?project_id=<id>
|
|
9
|
-
* Reads the allow-listed (role, auto_wakeable, allow_listed, enabled)
|
|
10
|
-
* schedule + recent wake_fires (last 50 entries).
|
|
11
|
-
*
|
|
12
|
-
* fazemos wake disable --role <slug> --reason <text> [--until <iso>]
|
|
13
|
-
* → POST /api/control-plane/wake/disable { action: "disable", ... }
|
|
14
|
-
* Upserts a wake_disables row; timed (--until) or indefinite.
|
|
15
|
-
*
|
|
16
|
-
* fazemos wake enable --role <slug> --reason <text>
|
|
17
|
-
* → POST /api/control-plane/wake/disable { action: "enable", ... }
|
|
18
|
-
* Deletes the wake_disables row (re-enables auto-wake for that role).
|
|
19
|
-
*
|
|
20
|
-
* Auth: disable/enable require admin/owner (same as trigger/disable).
|
|
21
|
-
* status requires any active org member.
|
|
22
|
-
* Scope: project-scoped reads (project_id query param); writes are org+project.
|
|
23
|
-
*
|
|
24
|
-
* Spec: F36-inbox-auto-wake-tech-spec.md
|
|
25
|
-
* Manifest: cli_commands (fazemos wake status/disable/enable)
|
|
26
|
-
*
|
|
27
|
-
* Key differences from trigger.ts:
|
|
28
|
-
* - NO cadence dimension (wake_disables is UNIQUE(org_id, role), no cadence)
|
|
29
|
-
* - No fire-now command (wake fires are event-driven, not manually re-driveable v1)
|
|
30
|
-
* - Response shape: schedule has auto_wakeable + allow_listed fields
|
|
31
|
-
* - Endpoint: /api/control-plane/wake and /api/control-plane/wake/disable
|
|
32
|
-
*/
|
|
1
|
+
// modeled on F35-FU-CRON-TZ-SCHEDULE per rul_project_header_scoping_for_new_cli; wake disable / wake enable diverge — see BUG159 ruling addendum 2026-08-26.
|
|
33
2
|
import chalk from 'chalk';
|
|
34
3
|
import { api } from './api.js';
|
|
35
|
-
import { getActiveProjectId } from './config.js';
|
|
36
4
|
// ── Helpers ────────────────────────────────────────────────────────────────────
|
|
37
5
|
/**
|
|
38
6
|
* Validate an ISO 8601 timestamp string (used for --until on disable).
|
|
@@ -62,11 +30,45 @@ function fireStatusLabel(status) {
|
|
|
62
30
|
return chalk.dim(status);
|
|
63
31
|
}
|
|
64
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* BUG159-A (addendum 2026-08-26): render the scope header line from the API
|
|
35
|
+
* response payload.
|
|
36
|
+
*
|
|
37
|
+
* The disables scope is per-(org, role) — "org" level identifier, not a slug.
|
|
38
|
+
* The disables position in the split-scope note renders org_slug, NOT
|
|
39
|
+
* disables_scope (which is the literal 'org', a level identifier, not a slug).
|
|
40
|
+
*
|
|
41
|
+
* allowlist_scope is always 'global'; disables_scope is always 'org'. By design
|
|
42
|
+
* these two level identifiers never match, so the split-scope note is always
|
|
43
|
+
* rendered — both scopes are always named:
|
|
44
|
+
* "Wake schedule for journeyjuntos/fazemos (allowlist: global | disables: journeyjuntos) (27 entries):"
|
|
45
|
+
*
|
|
46
|
+
* This function requires a populated WakeScopeInfo. The call site is responsible
|
|
47
|
+
* for guarding against missing scope and rendering a visibly-unknown fallback.
|
|
48
|
+
*/
|
|
49
|
+
function renderScopeHeader(scope, entryCount) {
|
|
50
|
+
const location = chalk.cyan(`${scope.org_slug}/${scope.project_slug}`);
|
|
51
|
+
// allowlist_scope ('global') and disables_scope ('org') are always different level
|
|
52
|
+
// identifiers by design — always render the split-scope note.
|
|
53
|
+
// Use org_slug in the disables position — NOT disables_scope ('org'), which is the
|
|
54
|
+
// level identifier, not a human-readable slug.
|
|
55
|
+
const splitNote = chalk.dim(`(allowlist: ${scope.allowlist_scope} | disables: ${scope.org_slug})`);
|
|
56
|
+
console.log(chalk.bold(`Wake schedule for ${location} ${splitNote} (${entryCount} entries):`));
|
|
57
|
+
}
|
|
65
58
|
// ── Command registration ───────────────────────────────────────────────────────
|
|
66
59
|
/**
|
|
67
60
|
* Register `wake status`, `wake disable`, and `wake enable` into the root
|
|
68
61
|
* Commander program. Called from index.ts after `program` is created, alongside
|
|
69
62
|
* registerPauseCommands, registerBudgetCommands, and registerTriggerCommands.
|
|
63
|
+
*
|
|
64
|
+
* SCOPE SPLIT:
|
|
65
|
+
* - wake status: project-scoped (X-Fazemos-Project-Id header, F15 pattern).
|
|
66
|
+
* --project <slug> resolves to projectId in the header (BUG159-B).
|
|
67
|
+
* - wake disable / wake enable: org-scoped (no project header).
|
|
68
|
+
* --project flag is REJECTED client-side before any API call (addendum item 3).
|
|
69
|
+
* This is the documented exception to rul_project_header_scoping_for_new_cli.
|
|
70
|
+
* If no active project and no --project, the API returns MISSING_PROJECT_CONTEXT
|
|
71
|
+
* on status; disable/enable use req.userOrgId from auth context (no project needed).
|
|
70
72
|
*/
|
|
71
73
|
export function registerWakeCommands(program) {
|
|
72
74
|
// ── `fazemos wake` ───────────────────────────────────────────────────────────
|
|
@@ -80,16 +82,35 @@ export function registerWakeCommands(program) {
|
|
|
80
82
|
' status Show wake schedule + recent fire history (last 50 entries)\n' +
|
|
81
83
|
' disable Disable auto-wake for a role (timed or indefinite) (admin/owner)\n' +
|
|
82
84
|
' enable Re-enable a previously disabled auto-wake role (admin/owner)\n\n' +
|
|
83
|
-
'status is readable by any active org member
|
|
84
|
-
'
|
|
85
|
-
'
|
|
85
|
+
'status is readable by any active org member. Use --project <slug> to\n' +
|
|
86
|
+
'inspect another project without switching the active project.\n' +
|
|
87
|
+
'disable/enable require admin or owner role and are org-scoped:\n' +
|
|
88
|
+
' wake_disables PK is (org_id, role) — not project-scoped.\n' +
|
|
89
|
+
' --project is not accepted on disable/enable (addendum 2026-08-26).\n\n' +
|
|
86
90
|
'Auto-wake fires automatically when an eligible task dispatch arrives for an\n' +
|
|
87
91
|
'allow-listed, auto-wakeable role. Use `wake status` to see the live state\n' +
|
|
88
92
|
'and `wake disable` to pause a role\'s auto-wake (its dispatches still land\n' +
|
|
89
|
-
'in the inbox; auto-launch is suppressed until you `wake enable` it)
|
|
93
|
+
'in the inbox; auto-launch is suppressed until you `wake enable` it).\n\n' +
|
|
94
|
+
'WAKE SET (159-C — read-only via CLI):\n' +
|
|
95
|
+
' The wake set is env-sourced from SSM parameters:\n' +
|
|
96
|
+
' /fazemos/{env}/wake/allowlist\n' +
|
|
97
|
+
' /fazemos/{env}/wake/auto-wakeable-roles\n' +
|
|
98
|
+
' To add or remove a role, an operator must run:\n' +
|
|
99
|
+
' aws ssm put-parameter --name /fazemos/{env}/wake/allowlist --value "..." \\\n' +
|
|
100
|
+
' --type String --overwrite\n' +
|
|
101
|
+
' and redeploy the env. No CLI path currently writes to the SSM parameters.');
|
|
90
102
|
// ── `fazemos wake status` ─────────────────────────────────────────────────────
|
|
91
103
|
//
|
|
92
|
-
// GET /api/control-plane/wake
|
|
104
|
+
// GET /api/control-plane/wake
|
|
105
|
+
//
|
|
106
|
+
// BUG159-B: project scope resolved via X-Fazemos-Project-Id header (requireProjectScope
|
|
107
|
+
// on API side). Pass --project <slug> to inspect another project without switching.
|
|
108
|
+
// BUG159-A (addendum): output header renders scope from API response payload.
|
|
109
|
+
// - "Wake schedule for <org_slug>/<project_slug> (N entries):"
|
|
110
|
+
// - Split-scope note: "allowlist: global | disables: <org_slug>"
|
|
111
|
+
// - org_slug rendered in the disables position (NOT disables_scope which is "org").
|
|
112
|
+
// - If scope is absent from response, renders "(scope unknown)" — never silent.
|
|
113
|
+
// BUG159-C: help text names the SSM parameters and states there is no CLI write path.
|
|
93
114
|
//
|
|
94
115
|
// schedule: role, auto_wakeable, allow_listed, enabled (operator disable state).
|
|
95
116
|
// fires: last 50 wake_fires (dispatch_id, role, fire_status, suppress_code,
|
|
@@ -97,40 +118,83 @@ export function registerWakeCommands(program) {
|
|
|
97
118
|
//
|
|
98
119
|
// Usage:
|
|
99
120
|
// fazemos wake status
|
|
121
|
+
// fazemos wake status --project <slug>
|
|
100
122
|
// fazemos wake status --json
|
|
101
123
|
wakeCmd
|
|
102
124
|
.command('status')
|
|
103
125
|
.description('Show inbox auto-wake schedule and recent fire history for the active project.\n\n' +
|
|
104
|
-
'
|
|
126
|
+
'The output header names the org/project being reported (BUG159-A). Use\n' +
|
|
127
|
+
'--project <slug> to inspect another project\'s wake state without switching\n' +
|
|
128
|
+
'the active project (BUG159-B).\n\n' +
|
|
129
|
+
'If no active project is set and no --project flag is provided, this command\n' +
|
|
130
|
+
'emits "requirement missing: project" and exits non-zero (rul_cli_missing_input_project).\n\n' +
|
|
105
131
|
'Schedule fields:\n' +
|
|
106
|
-
' auto_wakeable — role is eligible for auto-wake (AUTO_WAKEABLE_ROLES env)\n' +
|
|
107
|
-
' allow_listed — role is in the wake allow-list (WAKE_ALLOWLIST env)\n' +
|
|
132
|
+
' auto_wakeable — role is eligible for auto-wake (AUTO_WAKEABLE_ROLES env/SSM)\n' +
|
|
133
|
+
' allow_listed — role is in the wake allow-list (WAKE_ALLOWLIST env/SSM)\n' +
|
|
108
134
|
' enabled — no operator disable currently in effect\n\n' +
|
|
109
135
|
'fire_status values:\n' +
|
|
110
136
|
' claimed — wake claimed; launch in progress\n' +
|
|
111
137
|
' fired — dispatch/execution successfully created\n' +
|
|
112
138
|
' failed — wake failed; will retry on next eligible dispatch\n' +
|
|
113
139
|
' suppressed — canLaunch gate refused (org paused, budget, or fan-out cap)\n\n' +
|
|
140
|
+
'WAKE SET (read-only via CLI — 159-C):\n' +
|
|
141
|
+
' The wake set is sourced from SSM parameters:\n' +
|
|
142
|
+
' /fazemos/{env}/wake/allowlist — roles eligible to receive wakes\n' +
|
|
143
|
+
' /fazemos/{env}/wake/auto-wakeable-roles — roles that auto-launch on receipt\n' +
|
|
144
|
+
' To add or remove a role from the wake set, an operator must:\n' +
|
|
145
|
+
' 1. Run: aws ssm put-parameter --name /fazemos/{env}/wake/allowlist \\\n' +
|
|
146
|
+
' --value "<comma-separated-roles>" --type String --overwrite\n' +
|
|
147
|
+
' (and similarly for /fazemos/{env}/wake/auto-wakeable-roles)\n' +
|
|
148
|
+
' 2. Redeploy the env so the new parameter value takes effect.\n' +
|
|
149
|
+
' No CLI path currently writes to the SSM parameters.\n\n' +
|
|
114
150
|
'Readable by any active org member. Use --json for machine-readable output.')
|
|
151
|
+
.option('--project <slug>', 'project slug override (defaults to active project)')
|
|
115
152
|
.option('--json', 'output machine-readable JSON')
|
|
116
153
|
.action(async (opts) => {
|
|
117
154
|
try {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
const data = await api('GET',
|
|
155
|
+
// BUG159-B: use X-Fazemos-Project-Id header (F15 pattern) via projectSlug option.
|
|
156
|
+
// If no active project and no --project, api() sends no project header.
|
|
157
|
+
// The API's requireProjectScope returns MISSING_PROJECT_CONTEXT →
|
|
158
|
+
// api.ts translates to "requirement missing: project" (rul_cli_missing_input_project).
|
|
159
|
+
const data = await api('GET', '/api/control-plane/wake', undefined, { projectSlug: opts.project });
|
|
123
160
|
if (opts.json) {
|
|
124
161
|
console.log(JSON.stringify(data, null, 2));
|
|
125
162
|
return;
|
|
126
163
|
}
|
|
127
164
|
const { schedule, fires } = data;
|
|
165
|
+
// A PARTIAL scope object is truthy and would render "<org>/undefined" —
|
|
166
|
+
// a confidently-wrong header, which is the defect class BUG159 exists to
|
|
167
|
+
// kill. Treat anything short of both slugs as no scope at all, so the
|
|
168
|
+
// visible "(scope unknown)" fallback takes over.
|
|
169
|
+
const scope = data.scope && data.scope.org_slug && data.scope.project_slug
|
|
170
|
+
? data.scope
|
|
171
|
+
: undefined;
|
|
128
172
|
// ── Schedule ──────────────────────────────────────────────────────────
|
|
129
173
|
if (schedule.length === 0) {
|
|
130
|
-
|
|
174
|
+
// BUG159-A: even when empty, name the scope.
|
|
175
|
+
// On missing scope (older API / error path), render visibly-unknown —
|
|
176
|
+
// NEVER substitute the active project slug (that IS the BUG159 defect class).
|
|
177
|
+
if (scope) {
|
|
178
|
+
console.log(chalk.yellow(`Wake schedule for ${chalk.cyan(`${scope.org_slug}/${scope.project_slug}`)} — ` +
|
|
179
|
+
`no entries (WAKE_ALLOWLIST is empty or not set).`));
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
console.log(chalk.yellow(`Wake schedule for ${chalk.dim('(scope unknown)')} — ` +
|
|
183
|
+
`no entries (WAKE_ALLOWLIST is empty or not set).`));
|
|
184
|
+
}
|
|
131
185
|
}
|
|
132
186
|
else {
|
|
133
|
-
|
|
187
|
+
// BUG159-A: render scope header from API response payload.
|
|
188
|
+
// On missing scope (older API / error path), render visibly-unknown —
|
|
189
|
+
// NEVER substitute the active project slug (that IS the BUG159 defect class).
|
|
190
|
+
if (scope) {
|
|
191
|
+
renderScopeHeader(scope, schedule.length);
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
// Addendum item 2 fallback: scope absent → visibly-unknown indicator.
|
|
195
|
+
// Do NOT substitute active project slug here.
|
|
196
|
+
console.log(chalk.bold(`Wake schedule for ${chalk.dim('(scope unknown)')} (${schedule.length} entries):`));
|
|
197
|
+
}
|
|
134
198
|
console.log();
|
|
135
199
|
for (const entry of schedule) {
|
|
136
200
|
const enabledLabel = entry.enabled
|
|
@@ -183,6 +247,11 @@ export function registerWakeCommands(program) {
|
|
|
183
247
|
// Active disable → isWakeDisabled=true → no claim, no launch, still inbox-lands.
|
|
184
248
|
// --until <iso>: timed disable; omit for indefinite until `fazemos wake enable`.
|
|
185
249
|
//
|
|
250
|
+
// ADDENDUM 2026-08-26 (item 3): wake_disables is scoped per-(org_id, role).
|
|
251
|
+
// --project is defined so Commander can capture it, but the action rejects it
|
|
252
|
+
// CLIENT-SIDE BEFORE ANY API CALL with the exact-string error from the addendum.
|
|
253
|
+
// The API call uses noProjectHeader: true — org context comes from req.userOrgId.
|
|
254
|
+
//
|
|
186
255
|
// Note: NO --cadence flag (wake_disables is org-wide per role; no cadence dim).
|
|
187
256
|
//
|
|
188
257
|
// Usage:
|
|
@@ -196,26 +265,37 @@ export function registerWakeCommands(program) {
|
|
|
196
265
|
'execution — the inbox must be drained manually or re-enabled.\n\n' +
|
|
197
266
|
' (no --until) Indefinite disable — remains until `fazemos wake enable`\n' +
|
|
198
267
|
' --until <iso> Timed disable — auto-expires at the given UTC timestamp\n\n' +
|
|
199
|
-
'
|
|
268
|
+
'Org-scoped: wake disables apply per (org, role) — not per project.\n' +
|
|
269
|
+
'The --project flag is not accepted on this command (addendum 2026-08-26).\n' +
|
|
270
|
+
'If you need per-project wake disables, file a feature request.\n\n' +
|
|
271
|
+
'Requires admin or owner role. --reason is mandatory and IS persisted\n' +
|
|
272
|
+
'server-side to wake_disables.reason (genuine audit trail).')
|
|
200
273
|
.requiredOption('--role <slug>', 'role slug to disable (e.g. project-manager)')
|
|
201
274
|
.requiredOption('--reason <text>', 'reason for the disable (required for audit trail)')
|
|
202
275
|
.option('--until <iso>', 'ISO 8601 timestamp when the disable expires (omit for indefinite)')
|
|
276
|
+
// --project is defined so Commander captures it for the explicit rejection below.
|
|
277
|
+
// It is NOT a working option — the action rejects it before any API call.
|
|
278
|
+
.option('--project <slug>', '(not accepted — wake disables are org-scoped, not project-scoped)')
|
|
203
279
|
.option('--json', 'output machine-readable JSON')
|
|
204
280
|
.action(async (opts) => {
|
|
205
281
|
try {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
282
|
+
// ADDENDUM item 3: wake disables are scoped per-(org, role).
|
|
283
|
+
// --project is explicitly rejected CLIENT-SIDE BEFORE ANY API CALL.
|
|
284
|
+
// Silent-ignore is forbidden — silent scope IS the BUG159 defect class.
|
|
285
|
+
if (opts.project !== undefined) {
|
|
286
|
+
console.error('error: wake disables are scoped per-(org, role); --project is not accepted. If you need per-project disables, file a feature request.');
|
|
287
|
+
process.exit(1);
|
|
209
288
|
}
|
|
210
289
|
const body = {
|
|
211
290
|
action: 'disable',
|
|
212
|
-
project_id: projectId,
|
|
213
291
|
role: opts.role.trim().toLowerCase(),
|
|
214
292
|
reason: opts.reason,
|
|
215
293
|
};
|
|
216
294
|
if (opts.until !== undefined) {
|
|
217
295
|
body.until = validateIsoTimestamp(opts.until);
|
|
218
296
|
}
|
|
297
|
+
// noProjectHeader: true — wake disables are org-scoped (req.userOrgId on API side).
|
|
298
|
+
// Do NOT send X-Fazemos-Project-Id for this route (addendum item 4).
|
|
219
299
|
const data = await api('POST', '/api/control-plane/wake/disable', body, {
|
|
220
300
|
noProjectHeader: true,
|
|
221
301
|
});
|
|
@@ -248,11 +328,16 @@ export function registerWakeCommands(program) {
|
|
|
248
328
|
});
|
|
249
329
|
// ── `fazemos wake enable` ─────────────────────────────────────────────────────
|
|
250
330
|
//
|
|
251
|
-
// POST /api/control-plane/wake/
|
|
331
|
+
// POST /api/control-plane/wake/enable { role }
|
|
252
332
|
//
|
|
253
333
|
// Deletes the wake_disables row (re-enables auto-wake for that role).
|
|
254
334
|
// After enable: the next eligible task dispatch to this role auto-launches.
|
|
255
335
|
//
|
|
336
|
+
// ADDENDUM 2026-08-26 (item 3): wake_disables is scoped per-(org_id, role).
|
|
337
|
+
// --project is defined so Commander can capture it, but the action rejects it
|
|
338
|
+
// CLIENT-SIDE BEFORE ANY API CALL with the exact-string error from the addendum.
|
|
339
|
+
// The API call uses noProjectHeader: true — org context comes from req.userOrgId.
|
|
340
|
+
//
|
|
256
341
|
// Note: NO --cadence flag (wake_disables has no cadence dimension).
|
|
257
342
|
//
|
|
258
343
|
// Usage:
|
|
@@ -262,23 +347,43 @@ export function registerWakeCommands(program) {
|
|
|
262
347
|
.description('Re-enable auto-wake for a previously disabled role (admin/owner only).\n\n' +
|
|
263
348
|
'Deletes the disable record for the given role, allowing the next eligible\n' +
|
|
264
349
|
'task dispatch to auto-launch a wake execution.\n\n' +
|
|
265
|
-
'
|
|
350
|
+
'Org-scoped: wake disables apply per (org, role) — not per project.\n' +
|
|
351
|
+
'The --project flag is not accepted on this command (addendum 2026-08-26).\n' +
|
|
352
|
+
'If you need per-project wake disables, file a feature request.\n\n' +
|
|
353
|
+
'Requires admin or owner role. --reason is mandatory, but is NOT persisted\n' +
|
|
354
|
+
'server-side: the enable path DELETEs the wake_disables row, so the reason is\n' +
|
|
355
|
+
'printed locally for your own record only. (wake disable DOES persist reason.)')
|
|
266
356
|
.requiredOption('--role <slug>', 'role slug to enable (e.g. project-manager)')
|
|
267
|
-
.requiredOption('--reason <text>', 'reason for re-enabling (
|
|
357
|
+
.requiredOption('--reason <text>', 'reason for re-enabling (printed locally; NOT persisted server-side)')
|
|
358
|
+
// --project is defined so Commander captures it for the explicit rejection below.
|
|
359
|
+
// It is NOT a working option — the action rejects it before any API call.
|
|
360
|
+
.option('--project <slug>', '(not accepted — wake disables are org-scoped, not project-scoped)')
|
|
268
361
|
.option('--json', 'output machine-readable JSON')
|
|
269
362
|
.action(async (opts) => {
|
|
270
363
|
try {
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
364
|
+
// ADDENDUM item 3: wake disables are scoped per-(org, role).
|
|
365
|
+
// --project is explicitly rejected CLIENT-SIDE BEFORE ANY API CALL.
|
|
366
|
+
// Silent-ignore is forbidden — silent scope IS the BUG159 defect class.
|
|
367
|
+
if (opts.project !== undefined) {
|
|
368
|
+
console.error('error: wake disables are scoped per-(org, role); --project is not accepted. If you need per-project disables, file a feature request.');
|
|
369
|
+
process.exit(1);
|
|
274
370
|
}
|
|
371
|
+
// ADDENDUM item 4: enable has its own endpoint as of the BUG159 API-side
|
|
372
|
+
// revision (fazemos-api release-v0.3.77-rc1). The shared
|
|
373
|
+
// POST /wake/disable { action: 'enable' } branch is retained server-side
|
|
374
|
+
// ONLY as backward-compat for un-migrated clients — this is the migration.
|
|
375
|
+
//
|
|
376
|
+
// Body is { role } exactly. The dedicated handler destructures `role` and
|
|
377
|
+
// nothing else; `action` is meaningless on a single-purpose endpoint and
|
|
378
|
+
// `reason` is not persisted on the enable path (clearWakeDisable deletes
|
|
379
|
+
// the row). The reason is still collected and printed locally for the
|
|
380
|
+
// operator's own audit trail.
|
|
275
381
|
const body = {
|
|
276
|
-
action: 'enable',
|
|
277
|
-
project_id: projectId,
|
|
278
382
|
role: opts.role.trim().toLowerCase(),
|
|
279
|
-
reason: opts.reason,
|
|
280
383
|
};
|
|
281
|
-
|
|
384
|
+
// noProjectHeader: true — wake disables are org-scoped (req.userOrgId on API side).
|
|
385
|
+
// Do NOT send X-Fazemos-Project-Id for this route (addendum item 4).
|
|
386
|
+
const data = await api('POST', '/api/control-plane/wake/enable', body, {
|
|
282
387
|
noProjectHeader: true,
|
|
283
388
|
});
|
|
284
389
|
if (opts.json) {
|
package/dist/wake.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wake.js","sourceRoot":"","sources":["../src/wake.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wake.js","sourceRoot":"","sources":["../src/wake.ts"],"names":[],"mappings":"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"}
|