@formigio/fazemos-cli 0.10.62 → 0.10.63
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api.d.ts +23 -0
- package/dist/api.js +21 -0
- package/dist/api.js.map +1 -1
- package/dist/index.js +182 -42
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/api.d.ts
CHANGED
|
@@ -118,3 +118,26 @@ export declare function api(method: string, path: string, body?: unknown, opts?:
|
|
|
118
118
|
* handlers to keep the next slug-resolution honest.
|
|
119
119
|
*/
|
|
120
120
|
export declare function invalidateAuthMeCache(): void;
|
|
121
|
+
/**
|
|
122
|
+
* F18-FU T-CLI-1 — Set or clear a project's docs_repo field.
|
|
123
|
+
*
|
|
124
|
+
* Calls PATCH /api/organizations/:orgId/projects/:projectId with
|
|
125
|
+
* { docsRepo, reason }. Pass `null` for docsRepo to clear the field (the
|
|
126
|
+
* project then inherits from org.workspace_repo at runtime).
|
|
127
|
+
*/
|
|
128
|
+
export declare function patchProjectDocsRepo(orgId: string, projectId: string, body: {
|
|
129
|
+
docsRepo: string | null;
|
|
130
|
+
reason?: string;
|
|
131
|
+
}): Promise<unknown>;
|
|
132
|
+
/**
|
|
133
|
+
* F18-FU T-CLI-2 — Set or clear the org-level workspace_repo + workspace_branch.
|
|
134
|
+
*
|
|
135
|
+
* Calls PATCH /api/organizations/:orgId. The API accepts snake_case keys for
|
|
136
|
+
* workspace_repo and workspace_branch (F18 shipped this shape; do not reshape).
|
|
137
|
+
* Pass `null` for workspace_repo to clear the field.
|
|
138
|
+
*/
|
|
139
|
+
export declare function patchOrgWorkspace(orgId: string, body: {
|
|
140
|
+
workspace_repo: string | null;
|
|
141
|
+
workspace_branch?: string;
|
|
142
|
+
reason?: string;
|
|
143
|
+
}): Promise<unknown>;
|
package/dist/api.js
CHANGED
|
@@ -257,4 +257,25 @@ export async function api(method, path, body, opts = {}) {
|
|
|
257
257
|
export function invalidateAuthMeCache() {
|
|
258
258
|
clearAuthMeCache();
|
|
259
259
|
}
|
|
260
|
+
// ── F18-FU named helpers for docs-repo settings ─────────────────────────────
|
|
261
|
+
/**
|
|
262
|
+
* F18-FU T-CLI-1 — Set or clear a project's docs_repo field.
|
|
263
|
+
*
|
|
264
|
+
* Calls PATCH /api/organizations/:orgId/projects/:projectId with
|
|
265
|
+
* { docsRepo, reason }. Pass `null` for docsRepo to clear the field (the
|
|
266
|
+
* project then inherits from org.workspace_repo at runtime).
|
|
267
|
+
*/
|
|
268
|
+
export async function patchProjectDocsRepo(orgId, projectId, body) {
|
|
269
|
+
return api('PATCH', `/api/organizations/${orgId}/projects/${projectId}`, body, { noProjectHeader: true });
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* F18-FU T-CLI-2 — Set or clear the org-level workspace_repo + workspace_branch.
|
|
273
|
+
*
|
|
274
|
+
* Calls PATCH /api/organizations/:orgId. The API accepts snake_case keys for
|
|
275
|
+
* workspace_repo and workspace_branch (F18 shipped this shape; do not reshape).
|
|
276
|
+
* Pass `null` for workspace_repo to clear the field.
|
|
277
|
+
*/
|
|
278
|
+
export async function patchOrgWorkspace(orgId, body) {
|
|
279
|
+
return api('PATCH', `/api/organizations/${orgId}`, body, { noProjectHeader: true });
|
|
280
|
+
}
|
|
260
281
|
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,QAAQ,EACR,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,cAAc,EACd,gBAAgB,GAEjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C;;;;;;;GAOG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IACjC,MAAM,CAAS;IACf,IAAI,CAAU;IACd,IAAI,CAAW;IACf,YAAY,OAAe,EAAE,MAAc,EAAE,IAAa,EAAE,IAAc;QACxE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AA4BD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,YAAqB;IAChE,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;IAC/B,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,OAAO,GAAG,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,mEAAmE;YACnE,kEAAkE;YAClE,oCAAoC;YACpC,MAAM,kBAAkB,EAAE,CAAC;YAC3B,OAAO,GAAG,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,QAAQ,CAChB,oBAAoB,YAAY,EAAE,EAClC,GAAG,EACH,iBAAiB,CAClB,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,CAAC,EAAE,CAAC;IACpB,CAAC;IAED,OAAO,kBAAkB,EAAE,CAAC;AAC9B,CAAC;AAED,oFAAoF;AACpF,MAAM,OAAO,GAAG,iEAAiE,CAAC;AAElF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,KAAa;IACvD,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEtC,IAAI,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,kBAAkB,EAAE,CAAC;QAC3B,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,gBAAgB,KAAK,yEAAyE,CAC/F,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC,EAAE,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAmB,CAAC;QAClG,IAAI,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;YACjD,cAAc,CAAC,EAAE,CAAC,CAAC;YACnB,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,kEAAkE;QAClE,gEAAgE;QAChE,iBAAiB;IACnB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAA0B;IAC3D,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAClD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,0EAA0E;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAChD,IAAI,WAAW,IAAI,YAAY,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;QAChE,4EAA4E;QAC5E,sEAAsE;QACtE,sCAAsC;QACtC,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,SAAS,EAAE,IAAI,EAAE,CAAC;YACpB,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACnE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,UAAU,EAAE,CAAC,CAAC;YAClE,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,WAAW,CAAC;YACrB,CAAC;YACD,6EAA6E;YAC7E,iFAAiF;QACnF,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,GAAG,CACvB,MAAc,EACd,IAAY,EACZ,IAAc,EACd,OAAmB,EAAE;IAErB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;IAE/B,2FAA2F;IAC3F,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAEzC,IAAI,KAAK,GAAkB,IAAI,CAAC;IAChC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,8CAA8C;QAC9C,KAAK,GAAG,QAAQ,EAAE,CAAC;QACnB,mCAAmC;QACnC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,MAAM,cAAc,EAAE,CAAC;YAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAA2B;QACtC,cAAc,EAAE,kBAAkB;KACnC,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,IAAI,KAAK,CAAC;IAC/B,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,MAAM,EAAE,CAAC;IAChD,CAAC;IACD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,yEAAyE;IACzE,2EAA2E;IAC3E,yEAAyE;IACzE,mBAAmB;IACnB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjE,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,sBAAsB,CAAC,GAAG,SAAS,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,yEAAyE;IACzE,oCAAoC;IACpC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,oEAAoE;IACpE,yEAAyE;IACzE,qEAAqE;IACrE,oDAAoD;IACpD,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;IACjC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;IACtD,CAAC;IAED,MAAM,OAAO,GAAgB;QAC3B,MAAM;QACN,OAAO;KACR,CAAC;IAEF,IAAI,IAAI,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEnC,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,GAAG,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,GAAG,GACP,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;YACvC,CAAC,CAAE,IAA0C;YAC7C,CAAC,CAAC,IAAI,CAAC;QACX,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC;QACvB,MAAM,GAAG,GAAG,GAAG,EAAE,KAAK,IAAI,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;QAEpD,+DAA+D;QAC/D,8DAA8D;QAC9D,IAAI,IAAI,KAAK,yBAAyB,EAAE,CAAC;YACvC,MAAM,IAAI,QAAQ,CAChB,8BAA8B,EAC9B,QAAQ,CAAC,MAAM,EACf,IAAI,EACJ,IAAI,CACL,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACnC,gBAAgB,EAAE,CAAC;AACrB,CAAC;AAED,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,KAAa,EACb,SAAiB,EACjB,IAAkD;IAElD,OAAO,GAAG,CACR,OAAO,EACP,sBAAsB,KAAK,aAAa,SAAS,EAAE,EACnD,IAAI,EACJ,EAAE,eAAe,EAAE,IAAI,EAAE,CAC1B,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAa,EACb,IAAmF;IAEnF,OAAO,GAAG,CACR,OAAO,EACP,sBAAsB,KAAK,EAAE,EAC7B,IAAI,EACJ,EAAE,eAAe,EAAE,IAAI,EAAE,CAC1B,CAAC;AACJ,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -8,7 +8,7 @@ getActiveProjectId, setActiveProjectId, clearActiveProjectId, findProjectBySlug,
|
|
|
8
8
|
setOrgOverride, setProjectOverride, setDirContextSource, getDirContextSource, } from './config.js';
|
|
9
9
|
import { findDirContextFile, readDirContextFile, writeDirContextFile, removeDirContextFile, DIR_CONFIG_FILENAME, } from './dircontext.js';
|
|
10
10
|
import { login, signup, confirmSignup, adminLogin } from './auth.js';
|
|
11
|
-
import { api, ApiError, refreshAuthMeCache, invalidateAuthMeCache, resolveOrgIdMaybeSlug, resolveProjectIdBySlug } from './api.js';
|
|
11
|
+
import { api, ApiError, refreshAuthMeCache, invalidateAuthMeCache, resolveOrgIdMaybeSlug, resolveProjectIdBySlug, patchProjectDocsRepo, patchOrgWorkspace } from './api.js';
|
|
12
12
|
import { isProjectConnectionUnavailable, renderProjectConnectionUnavailableCopy, } from './connectionErrorCopy.js';
|
|
13
13
|
import { loadYaml, summarize } from './yaml/load.js';
|
|
14
14
|
import { printFindings, printJson } from './yaml/format.js';
|
|
@@ -28,7 +28,6 @@ import { registerApprovalsCommands } from './approvals.js';
|
|
|
28
28
|
import { registerSecretsCommands } from './commands/secrets.js';
|
|
29
29
|
import { registerProfilesCommands } from './commands/profiles.js';
|
|
30
30
|
import { registerImageCommands } from './commands/image.js';
|
|
31
|
-
import { registerIngestCommands } from './commands/ingest.js';
|
|
32
31
|
import { parseExecutionsJson, resolveWaitOptions, waitForPipelines, buildAwsCommand, validateExecutionEntry, } from './wait-for-pipeline.js';
|
|
33
32
|
import { readFileSync, readdirSync, writeFileSync, mkdirSync, existsSync, statSync } from 'fs';
|
|
34
33
|
import { fileURLToPath } from 'url';
|
|
@@ -761,6 +760,83 @@ orgs
|
|
|
761
760
|
process.exit(1);
|
|
762
761
|
}
|
|
763
762
|
});
|
|
763
|
+
// ── F18-FU — orgs set-workspace ─────────────────────────────────────────────
|
|
764
|
+
orgs
|
|
765
|
+
.command('set-workspace')
|
|
766
|
+
.description('Set or clear the org-level workspace repository and branch. Owner/admin only.\n\n' +
|
|
767
|
+
'Pass <owner/repo> to set the fallback docs repo for all projects that have not\n' +
|
|
768
|
+
'configured their own docs repo. Use --clear to remove the org-level repo.\n\n' +
|
|
769
|
+
'Note: this uses PATCH /api/organizations/:orgId (not PUT). Format validation\n' +
|
|
770
|
+
'is enforced on save; reachability is checked at pipeline-run time.')
|
|
771
|
+
.argument('[owner/repo]', 'Repository in owner/repo format (e.g. formigio/fazemos-workspace)')
|
|
772
|
+
.option('--branch <name>', 'Branch name (default: main)', 'main')
|
|
773
|
+
.option('--clear', 'Clear the org-level workspace repo')
|
|
774
|
+
.option('--reason <text>', 'Optional reason recorded in the audit log')
|
|
775
|
+
.action(async (repo, opts) => {
|
|
776
|
+
try {
|
|
777
|
+
// Validate mutual exclusion
|
|
778
|
+
if (!repo && !opts.clear) {
|
|
779
|
+
console.error(chalk.red('Provide <owner/repo> or --clear'));
|
|
780
|
+
console.log(chalk.gray('Usage: fazemos orgs set-workspace <owner/repo> [--branch <name>]'));
|
|
781
|
+
console.log(chalk.gray(' fazemos orgs set-workspace --clear'));
|
|
782
|
+
process.exit(1);
|
|
783
|
+
}
|
|
784
|
+
if (repo && opts.clear) {
|
|
785
|
+
console.error(chalk.red('<owner/repo> and --clear are mutually exclusive'));
|
|
786
|
+
process.exit(1);
|
|
787
|
+
}
|
|
788
|
+
const orgId = getActiveOrgId();
|
|
789
|
+
if (!orgId) {
|
|
790
|
+
console.error(chalk.red('No active org. Run: fazemos orgs switch <slug>'));
|
|
791
|
+
process.exit(1);
|
|
792
|
+
}
|
|
793
|
+
const workspace_repo = opts.clear ? null : repo;
|
|
794
|
+
const body = {
|
|
795
|
+
workspace_repo,
|
|
796
|
+
};
|
|
797
|
+
if (!opts.clear) {
|
|
798
|
+
// Only send workspace_branch when setting a repo (not clearing)
|
|
799
|
+
body.workspace_branch = opts.branch;
|
|
800
|
+
}
|
|
801
|
+
if (opts.reason)
|
|
802
|
+
body.reason = opts.reason;
|
|
803
|
+
const data = await patchOrgWorkspace(orgId, body);
|
|
804
|
+
const org = data.organization;
|
|
805
|
+
if (workspace_repo === null) {
|
|
806
|
+
console.log(chalk.green(`✓ Org workspace repo cleared for ${org.name ?? org.slug}`));
|
|
807
|
+
console.log(chalk.yellow(' ⚠ Projects without a project-level docs repo will now have no effective repo — pipelines will fail to clone.'));
|
|
808
|
+
console.log(chalk.gray(' → set a project-level repo: fazemos projects set-docs-repo <owner/repo>'));
|
|
809
|
+
}
|
|
810
|
+
else {
|
|
811
|
+
console.log(chalk.green(`✓ Org workspace set for ${org.name ?? org.slug}`));
|
|
812
|
+
console.log(` Workspace repo: ${workspace_repo}`);
|
|
813
|
+
console.log(` Branch: ${opts.branch}`);
|
|
814
|
+
console.log(chalk.gray(' New projects will inherit this. To override per-project: fazemos projects set-docs-repo <owner/repo>'));
|
|
815
|
+
}
|
|
816
|
+
}
|
|
817
|
+
catch (err) {
|
|
818
|
+
if (err instanceof ApiError) {
|
|
819
|
+
if (err.code === 'workspace_repo_format_invalid') {
|
|
820
|
+
console.error(chalk.red('Invalid repo format. Expected owner/repo (e.g. formigio/fazemos-workspace).'));
|
|
821
|
+
process.exit(1);
|
|
822
|
+
}
|
|
823
|
+
if (err.code === 'workspace_repo_empty') {
|
|
824
|
+
console.error(chalk.red('Workspace repo cannot be an empty string. Use --clear to remove it.'));
|
|
825
|
+
process.exit(1);
|
|
826
|
+
}
|
|
827
|
+
if (err.code === 'workspace_branch_empty') {
|
|
828
|
+
console.error(chalk.red('Branch name cannot be empty.'));
|
|
829
|
+
process.exit(1);
|
|
830
|
+
}
|
|
831
|
+
if (err.code === 'workspace_branch_invalid') {
|
|
832
|
+
console.error(chalk.red('Branch name is too long (max 100 characters).'));
|
|
833
|
+
process.exit(1);
|
|
834
|
+
}
|
|
835
|
+
}
|
|
836
|
+
console.error(chalk.red(err.message));
|
|
837
|
+
process.exit(1);
|
|
838
|
+
}
|
|
839
|
+
});
|
|
764
840
|
orgs
|
|
765
841
|
.command('invite')
|
|
766
842
|
.description('Invite a human member to the organization by email. The invitee receives an email with a one-time link to join. Use "orgs add-agent" for AI agents instead.')
|
|
@@ -1507,6 +1583,32 @@ projects
|
|
|
1507
1583
|
console.log(` Created: ${p.createdAt ? new Date(p.createdAt).toLocaleString() : '(unknown)'}`);
|
|
1508
1584
|
if (p.archivedAt)
|
|
1509
1585
|
console.log(` Archived at: ${new Date(p.archivedAt).toLocaleString()}`);
|
|
1586
|
+
// F18-FU T-CLI-3 — Docs repository output (Sage Screen 5 copy verbatim).
|
|
1587
|
+
// effectiveDocsRepo + docsRepoSource are server-computed fields on the
|
|
1588
|
+
// enriched GET .../projects/:projectId response — the CLI never computes
|
|
1589
|
+
// them locally.
|
|
1590
|
+
console.log('');
|
|
1591
|
+
console.log(chalk.cyan('Docs:'));
|
|
1592
|
+
if (p.docsRepoSource === 'project') {
|
|
1593
|
+
// Variant A — docs_repo set directly on this project
|
|
1594
|
+
console.log(` Docs repository: ${p.effectiveDocsRepo} ${chalk.gray('(set for this project)')}`);
|
|
1595
|
+
const docsRoot = p.docsRoot ?? `projects/${p.slug}`;
|
|
1596
|
+
console.log(` Docs root: ${docsRoot} ${chalk.gray('(convention default)')}`);
|
|
1597
|
+
}
|
|
1598
|
+
else if (p.docsRepoSource === 'org') {
|
|
1599
|
+
// Variant B — inheriting from org workspace_repo
|
|
1600
|
+
console.log(` Docs repository: ${p.effectiveDocsRepo} ${chalk.gray('(inherited from org)')}`);
|
|
1601
|
+
const docsRoot = p.docsRoot ?? `projects/${p.slug}`;
|
|
1602
|
+
console.log(` Docs root: ${docsRoot} ${chalk.gray('(convention default)')}`);
|
|
1603
|
+
console.log(chalk.gray(` → change with: fazemos projects set-docs-repo <owner/repo>`));
|
|
1604
|
+
}
|
|
1605
|
+
else {
|
|
1606
|
+
// Variant C — neither project nor org has a docs repo configured
|
|
1607
|
+
console.log(` Docs repository: ${chalk.yellow('⚠ not configured')}`);
|
|
1608
|
+
console.log(chalk.yellow(' Pipelines will fail to clone until this is set.'));
|
|
1609
|
+
console.log(chalk.gray(` → set for this project: fazemos projects set-docs-repo ${p.slug} <owner/repo>`));
|
|
1610
|
+
console.log(chalk.gray(` → set at org level: fazemos orgs set-workspace <owner/repo>`));
|
|
1611
|
+
}
|
|
1510
1612
|
if (p.stats) {
|
|
1511
1613
|
console.log('');
|
|
1512
1614
|
console.log(chalk.cyan('Activity:'));
|
|
@@ -1514,34 +1616,6 @@ projects
|
|
|
1514
1616
|
console.log(` Worksheets: ${p.stats.worksheets ?? 0}`);
|
|
1515
1617
|
console.log(` Templates: ${p.stats.templates ?? 0}`);
|
|
1516
1618
|
}
|
|
1517
|
-
// F51/F52 — Email Ingest: display known_senders and recent_events when present.
|
|
1518
|
-
// Only returned for owner/admin callers; plain members see no email_ingest key.
|
|
1519
|
-
if (p.email_ingest) {
|
|
1520
|
-
const ei = p.email_ingest;
|
|
1521
|
-
console.log('');
|
|
1522
|
-
console.log(chalk.cyan('Email Ingest:'));
|
|
1523
|
-
const senders = ei.known_senders ?? [];
|
|
1524
|
-
if (senders.length > 0) {
|
|
1525
|
-
console.log(` Known senders (${senders.length}):`);
|
|
1526
|
-
for (const s of senders) {
|
|
1527
|
-
console.log(` ${s}`);
|
|
1528
|
-
}
|
|
1529
|
-
}
|
|
1530
|
-
else {
|
|
1531
|
-
console.log(` Known senders: ${chalk.gray('(none — add with: fazemos ingest sender-map add)')}`);
|
|
1532
|
-
}
|
|
1533
|
-
const events = ei.recent_events ?? [];
|
|
1534
|
-
if (events.length > 0) {
|
|
1535
|
-
console.log(` Recent ingest events (last ${events.length}):`);
|
|
1536
|
-
for (const e of events) {
|
|
1537
|
-
const worksheetRef = e.worksheet_id ? `worksheet ${e.worksheet_id}` : chalk.gray('no worksheet');
|
|
1538
|
-
console.log(` [${e.id}] From: ${e.from} Subject: ${e.subject ?? chalk.gray('(none)')} → ${worksheetRef}`);
|
|
1539
|
-
}
|
|
1540
|
-
}
|
|
1541
|
-
else {
|
|
1542
|
-
console.log(` Recent ingest events: ${chalk.gray('(none)')}`);
|
|
1543
|
-
}
|
|
1544
|
-
}
|
|
1545
1619
|
}
|
|
1546
1620
|
catch (err) {
|
|
1547
1621
|
console.error(chalk.red(err.message));
|
|
@@ -1751,6 +1825,84 @@ projects
|
|
|
1751
1825
|
process.exit(1);
|
|
1752
1826
|
}
|
|
1753
1827
|
});
|
|
1828
|
+
// ── F18-FU — projects set-docs-repo ─────────────────────────────────────────
|
|
1829
|
+
projects
|
|
1830
|
+
.command('set-docs-repo')
|
|
1831
|
+
.description('Set or clear the docs repository for a project. Owner/admin only.\n\n' +
|
|
1832
|
+
'Pass <owner/repo> to point the project at a specific GitHub repo.\n' +
|
|
1833
|
+
'Pass --clear to remove the project-level override (the project then inherits\n' +
|
|
1834
|
+
'the org workspace_repo, or pipelines fail if that is also unset).\n\n' +
|
|
1835
|
+
'Format validation is enforced on save. Reachability is tested at pipeline-run\n' +
|
|
1836
|
+
'time — if the repo can\'t be cloned, check Project Settings → Docs.')
|
|
1837
|
+
.argument('[owner/repo]', 'Repository in owner/repo format (e.g. formigio/fazemos-workspace)')
|
|
1838
|
+
.option('--clear', 'Clear the project-level docs repo (reverts to org-level fallback)')
|
|
1839
|
+
.option('--reason <text>', 'Optional reason recorded in the audit log')
|
|
1840
|
+
.action(async (repo, opts) => {
|
|
1841
|
+
try {
|
|
1842
|
+
// Validate mutual exclusion: need exactly one of <owner/repo> or --clear
|
|
1843
|
+
if (!repo && !opts.clear) {
|
|
1844
|
+
console.error(chalk.red('Provide <owner/repo> or --clear'));
|
|
1845
|
+
console.log(chalk.gray('Usage: fazemos projects set-docs-repo <owner/repo>'));
|
|
1846
|
+
console.log(chalk.gray(' fazemos projects set-docs-repo --clear'));
|
|
1847
|
+
process.exit(1);
|
|
1848
|
+
}
|
|
1849
|
+
if (repo && opts.clear) {
|
|
1850
|
+
console.error(chalk.red('<owner/repo> and --clear are mutually exclusive'));
|
|
1851
|
+
process.exit(1);
|
|
1852
|
+
}
|
|
1853
|
+
const orgId = requireActiveOrgOrExit();
|
|
1854
|
+
// Resolve slug -> id; the active project is required for this command.
|
|
1855
|
+
// We don't accept a <slug> argument here — this command acts on the
|
|
1856
|
+
// active project (or --project override from the global hook). If no
|
|
1857
|
+
// project is active, fail clearly.
|
|
1858
|
+
const projectId = await resolveProjectIdBySlug();
|
|
1859
|
+
if (!projectId) {
|
|
1860
|
+
console.error(chalk.red('No active project. Run: fazemos projects switch <slug>'));
|
|
1861
|
+
process.exit(1);
|
|
1862
|
+
}
|
|
1863
|
+
const docsRepo = opts.clear ? null : repo;
|
|
1864
|
+
const body = { docsRepo };
|
|
1865
|
+
if (opts.reason)
|
|
1866
|
+
body.reason = opts.reason;
|
|
1867
|
+
const data = await patchProjectDocsRepo(orgId, projectId, body);
|
|
1868
|
+
const p = data.project;
|
|
1869
|
+
if (docsRepo === null) {
|
|
1870
|
+
// Sage Screen 6 — clear path
|
|
1871
|
+
if (p.effectiveDocsRepo) {
|
|
1872
|
+
console.log(chalk.green(`✓ Docs repo cleared for ${p.name} (${p.slug})`));
|
|
1873
|
+
console.log(chalk.gray(` Now inheriting: ${p.effectiveDocsRepo} (from org)`));
|
|
1874
|
+
}
|
|
1875
|
+
else {
|
|
1876
|
+
console.log(chalk.green(`✓ Docs repo cleared for ${p.name} (${p.slug})`));
|
|
1877
|
+
console.log(chalk.yellow(' ⚠ No org-level workspace repo set either — pipelines will fail to clone until one is configured.'));
|
|
1878
|
+
console.log(chalk.gray(` → set at org level: fazemos orgs set-workspace <owner/repo>`));
|
|
1879
|
+
}
|
|
1880
|
+
}
|
|
1881
|
+
else {
|
|
1882
|
+
// Sage Screen 6 — set path
|
|
1883
|
+
console.log(chalk.green(`✓ Docs repo set for ${p.name} (${p.slug})`));
|
|
1884
|
+
console.log(` Docs repository: ${docsRepo} ${chalk.gray('(set for this project)')}`);
|
|
1885
|
+
const docsRoot = p.docsRoot ?? `projects/${p.slug}`;
|
|
1886
|
+
console.log(` Docs root: ${docsRoot} ${chalk.gray('(convention default)')}`);
|
|
1887
|
+
console.log(chalk.gray(' Reachability is tested when a pipeline first tries to clone the repo.'));
|
|
1888
|
+
console.log(chalk.gray(' If it can\'t be reached, we\'ll point you back here.'));
|
|
1889
|
+
}
|
|
1890
|
+
}
|
|
1891
|
+
catch (err) {
|
|
1892
|
+
if (err instanceof ApiError) {
|
|
1893
|
+
if (err.code === 'docs_repo_format_invalid') {
|
|
1894
|
+
console.error(chalk.red('Invalid repo format. Expected owner/repo (e.g. formigio/fazemos-workspace).'));
|
|
1895
|
+
process.exit(1);
|
|
1896
|
+
}
|
|
1897
|
+
if (err.code === 'docs_repo_empty') {
|
|
1898
|
+
console.error(chalk.red('Docs repo cannot be an empty string. Use --clear to remove it.'));
|
|
1899
|
+
process.exit(1);
|
|
1900
|
+
}
|
|
1901
|
+
}
|
|
1902
|
+
console.error(chalk.red(err.message));
|
|
1903
|
+
process.exit(1);
|
|
1904
|
+
}
|
|
1905
|
+
});
|
|
1754
1906
|
// ── F42 — projects setup (binds docs + connection in one call) ──────────────
|
|
1755
1907
|
projects
|
|
1756
1908
|
.command('setup')
|
|
@@ -10519,18 +10671,6 @@ registerProfilesCommands(program);
|
|
|
10519
10671
|
// When codebuildEnabled=false on a build response, the note field is surfaced
|
|
10520
10672
|
// to the user (infrastructure not yet deployed).
|
|
10521
10673
|
registerImageCommands(program);
|
|
10522
|
-
// ── F52 — Email Ingest Phase B: unified ingest command group ──────────────────
|
|
10523
|
-
// Registers `ingest` top-level command with four sub-groups:
|
|
10524
|
-
// sender-map add / list / remove → POST/GET/DELETE /api/email-ingest/sender-map
|
|
10525
|
-
// personas list → GET /api/email-ingest/personas
|
|
10526
|
-
// holds list / show / resolve / drop → GET+POST /api/email-ingest/holds
|
|
10527
|
-
// project set-intake / show → PUT/GET /api/email-ingest/projects/:id/intake
|
|
10528
|
-
// Merge-forward of F51's email-ingest verbs (group renamed email-ingest → ingest).
|
|
10529
|
-
// API route prefix /api/email-ingest/… is UNCHANGED — only CLI verb renamed.
|
|
10530
|
-
// All org-scoped calls use noProjectHeader: true (role-gated, not project-header).
|
|
10531
|
-
// Project intake calls: projectId threaded in URL path, noProjectHeader: true.
|
|
10532
|
-
// owner/admin only; agent identities blocked server-side.
|
|
10533
|
-
registerIngestCommands(program);
|
|
10534
10674
|
// Skip auto-parse only when running under Vitest (which sets process.env.VITEST).
|
|
10535
10675
|
// Tests import `program` and drive it via `program.parseAsync(...)` after mocking
|
|
10536
10676
|
// `./api.js`. In every other context — direct invocation, npx tsx, OR the bin
|