@noodleseed/one 0.10.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +16 -4
- package/dist/cli.js.map +1 -1
- package/dist/commands/archive-ops.d.ts +3 -0
- package/dist/commands/archive-ops.d.ts.map +1 -0
- package/dist/commands/archive-ops.js +168 -0
- package/dist/commands/archive-ops.js.map +1 -0
- package/dist/commands/org-admin.d.ts +17 -0
- package/dist/commands/org-admin.d.ts.map +1 -0
- package/dist/commands/org-admin.js +241 -0
- package/dist/commands/org-admin.js.map +1 -0
- package/dist/commands/policy-ops.d.ts.map +1 -1
- package/dist/commands/policy-ops.js +123 -1
- package/dist/commands/policy-ops.js.map +1 -1
- package/dist/commands/session.d.ts +1 -15
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +15 -170
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/shared.d.ts.map +1 -1
- package/dist/commands/shared.js +13 -5
- package/dist/commands/shared.js.map +1 -1
- package/dist/commands/update-ops.d.ts +29 -0
- package/dist/commands/update-ops.d.ts.map +1 -0
- package/dist/commands/update-ops.js +315 -0
- package/dist/commands/update-ops.js.map +1 -0
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/update-binary.d.ts +38 -0
- package/dist/update-binary.d.ts.map +1 -0
- package/dist/update-binary.js +144 -0
- package/dist/update-binary.js.map +1 -0
- package/dist/update-check.d.ts +40 -0
- package/dist/update-check.d.ts.map +1 -0
- package/dist/update-check.js +212 -0
- package/dist/update-check.js.map +1 -0
- package/dist/update-render.d.ts +17 -0
- package/dist/update-render.d.ts.map +1 -0
- package/dist/update-render.js +39 -0
- package/dist/update-render.js.map +1 -0
- package/dist/update.d.ts +10 -9
- package/dist/update.d.ts.map +1 -1
- package/dist/update.js +21 -89
- package/dist/update.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js +13 -1
- package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +2 -0
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
- package/node_modules/@noodle-borg/service/dist/archive-sweeper.d.ts +43 -0
- package/node_modules/@noodle-borg/service/dist/archive-sweeper.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/archive-sweeper.js +122 -0
- package/node_modules/@noodle-borg/service/dist/archive-sweeper.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/commercial-plans.d.ts +11 -0
- package/node_modules/@noodle-borg/service/dist/commercial-plans.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/commercial-plans.js +119 -0
- package/node_modules/@noodle-borg/service/dist/commercial-plans.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/deployment-versioning.d.ts +2 -0
- package/node_modules/@noodle-borg/service/dist/deployment-versioning.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/deployment-versioning.js +1 -1
- package/node_modules/@noodle-borg/service/dist/deployment-versioning.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/index.d.ts +3 -1
- package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/index.js +2 -0
- package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/options.d.ts +9 -0
- package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/policy.d.ts +3 -0
- package/node_modules/@noodle-borg/service/dist/policy.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/policy.js +32 -0
- package/node_modules/@noodle-borg/service/dist/policy.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/registry-state.d.ts +25 -0
- package/node_modules/@noodle-borg/service/dist/registry-state.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/registry-state.js +119 -0
- package/node_modules/@noodle-borg/service/dist/registry-state.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/registry.d.ts +7 -6
- package/node_modules/@noodle-borg/service/dist/registry.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/registry.js +44 -44
- package/node_modules/@noodle-borg/service/dist/registry.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/archive.d.ts +16 -0
- package/node_modules/@noodle-borg/service/dist/routes/archive.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/archive.js +83 -0
- package/node_modules/@noodle-borg/service/dist/routes/archive.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/control-plane.d.ts +1 -18
- package/node_modules/@noodle-borg/service/dist/routes/control-plane.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/control-plane.js +18 -260
- package/node_modules/@noodle-borg/service/dist/routes/control-plane.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/deployments.d.ts +17 -0
- package/node_modules/@noodle-borg/service/dist/routes/deployments.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/deployments.js +88 -0
- package/node_modules/@noodle-borg/service/dist/routes/deployments.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/org-admin.d.ts +40 -0
- package/node_modules/@noodle-borg/service/dist/routes/org-admin.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/org-admin.js +353 -0
- package/node_modules/@noodle-borg/service/dist/routes/org-admin.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts +15 -0
- package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/paths.js +47 -0
- package/node_modules/@noodle-borg/service/dist/routes/paths.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/plans.d.ts +20 -0
- package/node_modules/@noodle-borg/service/dist/routes/plans.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/plans.js +217 -0
- package/node_modules/@noodle-borg/service/dist/routes/plans.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/policies.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/policies.js +7 -0
- package/node_modules/@noodle-borg/service/dist/routes/policies.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/rollback.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/rollback.js +19 -1
- package/node_modules/@noodle-borg/service/dist/routes/rollback.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service.js +107 -4
- package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/control-plane.d.ts +14 -0
- package/node_modules/@noodle-borg/service/dist/store/control-plane.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/control-plane.js +38 -0
- package/node_modules/@noodle-borg/service/dist/store/control-plane.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/json-file.d.ts +25 -0
- package/node_modules/@noodle-borg/service/dist/store/json-file.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/json-file.js +163 -0
- package/node_modules/@noodle-borg/service/dist/store/json-file.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.d.ts +14 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.js +16 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-policy.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-policy.js +10 -4
- package/node_modules/@noodle-borg/service/dist/store/postgres-policy.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-rows.d.ts +60 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-rows.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-rows.js +101 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-rows.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js +10 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts +20 -6
- package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres.js +74 -122
- package/node_modules/@noodle-borg/service/dist/store/postgres.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/records.d.ts +35 -0
- package/node_modules/@noodle-borg/service/dist/store/records.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/records.js +87 -0
- package/node_modules/@noodle-borg/service/dist/store/records.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/validate.d.ts +19 -0
- package/node_modules/@noodle-borg/service/dist/store/validate.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/validate.js +61 -0
- package/node_modules/@noodle-borg/service/dist/store/validate.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store.d.ts +68 -44
- package/node_modules/@noodle-borg/service/dist/store.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store.js +48 -213
- package/node_modules/@noodle-borg/service/dist/store.js.map +1 -1
- package/package.json +2 -2
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAmDA,wBAAsB,GAAG,CACvB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,GAAE,MAAkB,GACvB,OAAO,CAAC,MAAM,CAAC,CAYjB"}
|
package/dist/cli.js
CHANGED
|
@@ -14,6 +14,7 @@ import { realpathSync } from 'node:fs';
|
|
|
14
14
|
import { homedir } from 'node:os';
|
|
15
15
|
import { fileURLToPath } from 'node:url';
|
|
16
16
|
import { runAgents } from './agents.js';
|
|
17
|
+
import { runArchive, runRestore } from './commands/archive-ops.js';
|
|
17
18
|
import { runAudit } from './commands/audit-ops.js';
|
|
18
19
|
import { runAuth } from './commands/auth-ops.js';
|
|
19
20
|
import { runDev, runSmoke as runLocalSmoke, runLocalTest, runValidate, } from './commands/author-loop.js';
|
|
@@ -23,20 +24,27 @@ import { runAccess, runDeploy, runOpen, runRollback, runStatus } from './command
|
|
|
23
24
|
import { runHostedSmoke, runInspect } from './commands/diagnostics-ops.js';
|
|
24
25
|
import { runLogs } from './commands/logs-ops.js';
|
|
25
26
|
import { runCheck, runDevtools } from './commands/mcp-apps.js';
|
|
27
|
+
import { runMembers, runOrgs } from './commands/org-admin.js';
|
|
26
28
|
import { runPolicy } from './commands/policy-ops.js';
|
|
27
29
|
import { runDocs, runExport, runImport, runInit, runLink, runSetup, } from './commands/project-setup.js';
|
|
28
30
|
import { runServiceCommand } from './commands/service-ops.js';
|
|
29
|
-
import { runList, runLogin, runLogout,
|
|
31
|
+
import { runList, runLogin, runLogout, runTarget, runWhoami } from './commands/session.js';
|
|
30
32
|
import { usage } from './commands/shared.js';
|
|
33
|
+
import { runUpdateCommand } from './commands/update-ops.js';
|
|
31
34
|
import { runDoctor } from './doctor.js';
|
|
32
35
|
import { runStart } from './first-run.js';
|
|
33
36
|
import { offerFirstRun } from './first-run-entry.js';
|
|
34
|
-
import { currentCliVersion
|
|
37
|
+
import { currentCliVersion } from './update.js';
|
|
38
|
+
import { maybeCheckForCliUpdate } from './update-check.js';
|
|
35
39
|
export async function run(argv, env = process.env, home = homedir()) {
|
|
36
40
|
const [command, ...rest] = argv;
|
|
37
41
|
const code = await runCommand(command, rest, env, home);
|
|
38
42
|
if (code === 0) {
|
|
39
|
-
|
|
43
|
+
// The passive check never changes the user's exit code except under the
|
|
44
|
+
// explicit NOODLE_UPDATE_MODE=check contract (overlay 10 = update available).
|
|
45
|
+
const overlay = await maybeCheckForCliUpdate({ command, argv: rest, env, home }).catch(() => undefined);
|
|
46
|
+
if (overlay !== undefined)
|
|
47
|
+
return overlay;
|
|
40
48
|
}
|
|
41
49
|
return code;
|
|
42
50
|
}
|
|
@@ -57,7 +65,7 @@ async function runCommand(command, rest, env, home) {
|
|
|
57
65
|
case undefined:
|
|
58
66
|
return offerFirstRun(env, home);
|
|
59
67
|
case 'update':
|
|
60
|
-
return runUpdateCommand(rest);
|
|
68
|
+
return runUpdateCommand(rest, { env });
|
|
61
69
|
case 'init':
|
|
62
70
|
return runInit(rest);
|
|
63
71
|
case 'setup':
|
|
@@ -112,6 +120,10 @@ async function runCommand(command, rest, env, home) {
|
|
|
112
120
|
return runHostedSmoke(rest, env, home);
|
|
113
121
|
case 'rollback':
|
|
114
122
|
return runRollback(rest, env, home);
|
|
123
|
+
case 'archive':
|
|
124
|
+
return runArchive(rest, env, home);
|
|
125
|
+
case 'restore':
|
|
126
|
+
return runRestore(rest, env, home);
|
|
115
127
|
case 'access':
|
|
116
128
|
return runAccess(rest, env, home);
|
|
117
129
|
case 'service':
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EACL,MAAM,EACN,QAAQ,IAAI,aAAa,EACzB,YAAY,EACZ,WAAW,GACZ,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACjG,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EACL,OAAO,EACP,SAAS,EACT,SAAS,EACT,OAAO,EACP,OAAO,EACP,QAAQ,GACT,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare function runArchive(rest: readonly string[], env: NodeJS.ProcessEnv, home: string): Promise<number>;
|
|
2
|
+
export declare function runRestore(rest: readonly string[], env: NodeJS.ProcessEnv, home: string): Promise<number>;
|
|
3
|
+
//# sourceMappingURL=archive-ops.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archive-ops.d.ts","sourceRoot":"","sources":["../../src/commands/archive-ops.ts"],"names":[],"mappings":"AAuFA,wBAAsB,UAAU,CAC9B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAuEjB;AAED,wBAAsB,UAAU,CAC9B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CA6CjB"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* App soft-delete operations (ADR 0117): `noodle archive <app>` and `noodle restore <app>`.
|
|
3
|
+
* Archive always applies to the whole app — every environment and server version — so there is no
|
|
4
|
+
* `--env` flag. The service gates both on org-owner identity, hides archived apps from the default
|
|
5
|
+
* deployments list, serves their MCP endpoints as 410 Gone, and hard-deletes them after the
|
|
6
|
+
* retention window (default 30 days); `restore` undoes the archive within that window.
|
|
7
|
+
*/
|
|
8
|
+
import { resolveControlPlaneToken, serviceJson } from '../control-plane.js';
|
|
9
|
+
import { confirm } from '../prompts.js';
|
|
10
|
+
import { printCliFailure, resolveTenantTarget, serviceFailure } from './shared.js';
|
|
11
|
+
function parseAppCommandArgs(command, rest) {
|
|
12
|
+
let positionalApp;
|
|
13
|
+
let flagApp;
|
|
14
|
+
let org;
|
|
15
|
+
let service;
|
|
16
|
+
let authToken;
|
|
17
|
+
let json = false;
|
|
18
|
+
let yes = false;
|
|
19
|
+
let failure;
|
|
20
|
+
for (let i = 0; i < rest.length; i++) {
|
|
21
|
+
const arg = rest[i];
|
|
22
|
+
if (arg === '--org')
|
|
23
|
+
org = rest[++i];
|
|
24
|
+
else if (arg === '--app')
|
|
25
|
+
flagApp = rest[++i];
|
|
26
|
+
else if (arg === '--service')
|
|
27
|
+
service = rest[++i];
|
|
28
|
+
else if (arg === '--auth-token')
|
|
29
|
+
authToken = rest[++i];
|
|
30
|
+
else if (arg === '--json')
|
|
31
|
+
json = true;
|
|
32
|
+
else if (arg === '--yes')
|
|
33
|
+
yes = true;
|
|
34
|
+
else if (arg === '--env') {
|
|
35
|
+
failure = failure ?? {
|
|
36
|
+
code: 'usage_error',
|
|
37
|
+
message: `${command} applies to the whole app; --env is not supported`,
|
|
38
|
+
cause: `${command === 'archive' ? 'Archiving' : 'Restoring'} always covers every environment of the app.`,
|
|
39
|
+
fix: 'Drop the --env flag.',
|
|
40
|
+
next: `noodle ${command} <app> --org <org>`,
|
|
41
|
+
exitCode: 2,
|
|
42
|
+
};
|
|
43
|
+
i++;
|
|
44
|
+
}
|
|
45
|
+
else if (arg?.startsWith('--')) {
|
|
46
|
+
failure = failure ?? {
|
|
47
|
+
code: 'usage_error',
|
|
48
|
+
message: `unknown ${command} option ${arg}`,
|
|
49
|
+
cause: `${arg} is not a supported ${command} option.`,
|
|
50
|
+
fix: `Remove the unknown option or use a supported ${command} flag.`,
|
|
51
|
+
next: `noodle ${command} <app> --org <org>`,
|
|
52
|
+
exitCode: 2,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
else if (arg !== undefined && positionalApp === undefined) {
|
|
56
|
+
positionalApp = arg;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const app = positionalApp ?? flagApp;
|
|
60
|
+
return {
|
|
61
|
+
...(app !== undefined ? { app } : {}),
|
|
62
|
+
...(org !== undefined ? { org } : {}),
|
|
63
|
+
...(service !== undefined ? { service } : {}),
|
|
64
|
+
...(authToken !== undefined ? { authToken } : {}),
|
|
65
|
+
json,
|
|
66
|
+
yes,
|
|
67
|
+
...(failure !== undefined ? { failure } : {}),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function authRequired(command) {
|
|
71
|
+
return {
|
|
72
|
+
code: 'auth_required',
|
|
73
|
+
message: 'No control-plane login token is available.',
|
|
74
|
+
cause: `Hosted ${command} requires an authenticated Noodle Seed Cloud identity.`,
|
|
75
|
+
fix: 'Sign in to the target service.',
|
|
76
|
+
next: 'noodle login',
|
|
77
|
+
exitCode: 3,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
export async function runArchive(rest, env, home) {
|
|
81
|
+
const args = parseAppCommandArgs('archive', rest);
|
|
82
|
+
if (args.failure !== undefined)
|
|
83
|
+
return printCliFailure('archive', args.failure, args.json);
|
|
84
|
+
const target = resolveTenantTarget(args, home);
|
|
85
|
+
if (!target.ok)
|
|
86
|
+
return printCliFailure('archive', target.error, args.json);
|
|
87
|
+
if (!args.yes) {
|
|
88
|
+
const interactive = !args.json && process.stdin.isTTY === true && process.stdout.isTTY === true;
|
|
89
|
+
if (!interactive) {
|
|
90
|
+
return printCliFailure('archive', {
|
|
91
|
+
code: 'confirmation_required',
|
|
92
|
+
message: 'archive requires confirmation',
|
|
93
|
+
cause: 'Archiving stops serving every environment of the app (410 Gone) and schedules permanent deletion after the retention window.',
|
|
94
|
+
fix: 'Re-run with --yes to confirm non-interactively.',
|
|
95
|
+
next: `noodle archive ${target.app} --org ${target.org} --yes`,
|
|
96
|
+
exitCode: 2,
|
|
97
|
+
}, args.json);
|
|
98
|
+
}
|
|
99
|
+
const confirmed = await confirm(`Archive ${target.org}/${target.app}? Every environment stops serving (410 Gone); it is permanently deleted after the retention window (default 30 days) unless restored.`, { initial: false });
|
|
100
|
+
if (!confirmed) {
|
|
101
|
+
console.error('archive: cancelled');
|
|
102
|
+
return 2;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
const resolved = await resolveControlPlaneToken({
|
|
106
|
+
serviceFlag: args.service ?? target.serviceUrl,
|
|
107
|
+
authFlag: args.authToken,
|
|
108
|
+
env,
|
|
109
|
+
home,
|
|
110
|
+
});
|
|
111
|
+
if (resolved.token === undefined) {
|
|
112
|
+
return printCliFailure('archive', authRequired('archive'), args.json);
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
const body = await serviceJson(`${resolved.serviceUrl}/v1/orgs/${encodeURIComponent(target.org)}` +
|
|
116
|
+
`/apps/${encodeURIComponent(target.app)}/archive`, resolved.token, { method: 'POST' });
|
|
117
|
+
if (args.json) {
|
|
118
|
+
console.log(JSON.stringify({ ...body, service: resolved.serviceUrl }));
|
|
119
|
+
return 0;
|
|
120
|
+
}
|
|
121
|
+
console.log(`service: ${resolved.serviceUrl}`);
|
|
122
|
+
console.log(`target: ${target.org}/${target.app}`);
|
|
123
|
+
console.log(`archived: ${body.archive.archivedAt}${body.archive.alreadyArchived ? ' (already archived)' : ''}`);
|
|
124
|
+
console.log(`deployments archived: ${body.archive.archivedDeployments}`);
|
|
125
|
+
console.log('Endpoints now answer 410 Gone; secrets and variables are retained but inert.');
|
|
126
|
+
console.log(`Next: noodle restore ${target.app} --org ${target.org}`);
|
|
127
|
+
return 0;
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
return printCliFailure('archive', serviceFailure('archive', error, 'noodle list --archived'), args.json);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
export async function runRestore(rest, env, home) {
|
|
134
|
+
const args = parseAppCommandArgs('restore', rest);
|
|
135
|
+
if (args.failure !== undefined)
|
|
136
|
+
return printCliFailure('restore', args.failure, args.json);
|
|
137
|
+
const target = resolveTenantTarget(args, home);
|
|
138
|
+
if (!target.ok)
|
|
139
|
+
return printCliFailure('restore', target.error, args.json);
|
|
140
|
+
const resolved = await resolveControlPlaneToken({
|
|
141
|
+
serviceFlag: args.service ?? target.serviceUrl,
|
|
142
|
+
authFlag: args.authToken,
|
|
143
|
+
env,
|
|
144
|
+
home,
|
|
145
|
+
});
|
|
146
|
+
if (resolved.token === undefined) {
|
|
147
|
+
return printCliFailure('restore', authRequired('restore'), args.json);
|
|
148
|
+
}
|
|
149
|
+
try {
|
|
150
|
+
const body = await serviceJson(`${resolved.serviceUrl}/v1/orgs/${encodeURIComponent(target.org)}` +
|
|
151
|
+
`/apps/${encodeURIComponent(target.app)}/restore`, resolved.token, { method: 'POST' });
|
|
152
|
+
if (args.json) {
|
|
153
|
+
console.log(JSON.stringify({ ...body, service: resolved.serviceUrl }));
|
|
154
|
+
return 0;
|
|
155
|
+
}
|
|
156
|
+
console.log(`service: ${resolved.serviceUrl}`);
|
|
157
|
+
console.log(`target: ${target.org}/${target.app}`);
|
|
158
|
+
console.log(body.restore.alreadyActive
|
|
159
|
+
? 'status: already active (nothing was archived)'
|
|
160
|
+
: `restored deployments: ${body.restore.restoredDeployments}`);
|
|
161
|
+
console.log(`Next: noodle status --org ${target.org} --app ${target.app}`);
|
|
162
|
+
return 0;
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
return printCliFailure('restore', serviceFailure('restore', error, 'noodle list --archived'), args.json);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=archive-ops.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archive-ops.js","sourceRoot":"","sources":["../../src/commands/archive-ops.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare function runOrgs(rest: readonly string[], env: NodeJS.ProcessEnv, home: string): Promise<number>;
|
|
2
|
+
export declare function runMembers(rest: readonly string[], env: NodeJS.ProcessEnv, home: string): Promise<number>;
|
|
3
|
+
export declare function parseOrgArgs(rest: readonly string[]): {
|
|
4
|
+
readonly serviceFlag?: string;
|
|
5
|
+
readonly authFlag?: string;
|
|
6
|
+
readonly displayName?: string;
|
|
7
|
+
readonly name?: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function parseMemberArgs(rest: readonly string[]): {
|
|
10
|
+
readonly serviceFlag?: string;
|
|
11
|
+
readonly authFlag?: string;
|
|
12
|
+
readonly org?: string;
|
|
13
|
+
readonly subject?: string;
|
|
14
|
+
readonly email?: string;
|
|
15
|
+
readonly role?: 'owner' | 'developer';
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=org-admin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-admin.d.ts","sourceRoot":"","sources":["../../src/commands/org-admin.ts"],"names":[],"mappings":"AAQA,wBAAsB,OAAO,CAC3B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAgEjB;AAED,wBAAsB,UAAU,CAC9B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAiJjB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG;IACrD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB,CAkBA;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG;IACxD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;CACvC,CA2BA"}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Org administration commands (moved from `session.ts` to keep both under the size gate): `orgs
|
|
3
|
+
* list|create|rename` and `members list|add|remove|set-role|invitations|revoke`. Every operation rides
|
|
4
|
+
* the authenticated `/v1/orgs/...` control-plane routes; nothing here touches storage directly.
|
|
5
|
+
*/
|
|
6
|
+
import { resolveControlPlaneToken, serviceJson } from '../control-plane.js';
|
|
7
|
+
import { missingLogin, usage } from './shared.js';
|
|
8
|
+
export async function runOrgs(rest, env, home) {
|
|
9
|
+
const [action, maybeSlug, ...tail] = rest;
|
|
10
|
+
const { serviceFlag, authFlag, displayName, name } = parseOrgArgs(tail);
|
|
11
|
+
const json = tail.includes('--json');
|
|
12
|
+
const { serviceUrl, token } = await resolveControlPlaneToken({
|
|
13
|
+
serviceFlag,
|
|
14
|
+
authFlag,
|
|
15
|
+
env,
|
|
16
|
+
home,
|
|
17
|
+
});
|
|
18
|
+
if (token === undefined)
|
|
19
|
+
return missingLogin('orgs');
|
|
20
|
+
try {
|
|
21
|
+
if (action === 'list') {
|
|
22
|
+
const body = await serviceJson(`${serviceUrl}/v1/orgs`, token);
|
|
23
|
+
if (json) {
|
|
24
|
+
console.log(JSON.stringify({ ok: true, service: serviceUrl, orgs: body.orgs }));
|
|
25
|
+
return 0;
|
|
26
|
+
}
|
|
27
|
+
for (const org of body.orgs)
|
|
28
|
+
console.log(`${org.slug}\t${org.displayName ?? ''}`);
|
|
29
|
+
return 0;
|
|
30
|
+
}
|
|
31
|
+
if (action === 'create' && maybeSlug !== undefined) {
|
|
32
|
+
const body = await serviceJson(`${serviceUrl}/v1/orgs`, token, {
|
|
33
|
+
method: 'POST',
|
|
34
|
+
headers: { 'content-type': 'application/json' },
|
|
35
|
+
body: JSON.stringify({ slug: maybeSlug, ...(displayName ? { displayName } : {}) }),
|
|
36
|
+
});
|
|
37
|
+
if (json) {
|
|
38
|
+
console.log(JSON.stringify({ ok: true, service: serviceUrl, org: body.org }));
|
|
39
|
+
return 0;
|
|
40
|
+
}
|
|
41
|
+
console.log(`created ${body.org.slug}`);
|
|
42
|
+
return 0;
|
|
43
|
+
}
|
|
44
|
+
if (action === 'rename' && maybeSlug !== undefined && name !== undefined) {
|
|
45
|
+
const body = await serviceJson(`${serviceUrl}/v1/orgs/${encodeURIComponent(maybeSlug)}`, token, {
|
|
46
|
+
method: 'PATCH',
|
|
47
|
+
headers: { 'content-type': 'application/json' },
|
|
48
|
+
body: JSON.stringify({ displayName: name }),
|
|
49
|
+
});
|
|
50
|
+
if (json) {
|
|
51
|
+
console.log(JSON.stringify({ ok: true, service: serviceUrl, org: body.org }));
|
|
52
|
+
return 0;
|
|
53
|
+
}
|
|
54
|
+
console.log(`renamed ${body.org.slug} to "${body.org.displayName ?? name}"`);
|
|
55
|
+
return 0;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
console.error(`orgs: ${error.message}`);
|
|
60
|
+
return 1;
|
|
61
|
+
}
|
|
62
|
+
usage();
|
|
63
|
+
return 2;
|
|
64
|
+
}
|
|
65
|
+
export async function runMembers(rest, env, home) {
|
|
66
|
+
const [action, ...tail] = rest;
|
|
67
|
+
const args = parseMemberArgs(tail);
|
|
68
|
+
const json = tail.includes('--json');
|
|
69
|
+
const all = tail.includes('--all');
|
|
70
|
+
if (!args.org) {
|
|
71
|
+
console.error('members: --org is required');
|
|
72
|
+
return 2;
|
|
73
|
+
}
|
|
74
|
+
const { serviceUrl, token } = await resolveControlPlaneToken({
|
|
75
|
+
serviceFlag: args.serviceFlag,
|
|
76
|
+
authFlag: args.authFlag,
|
|
77
|
+
env,
|
|
78
|
+
home,
|
|
79
|
+
});
|
|
80
|
+
if (token === undefined)
|
|
81
|
+
return missingLogin('members');
|
|
82
|
+
try {
|
|
83
|
+
const base = `${serviceUrl}/v1/orgs/${encodeURIComponent(args.org)}/members`;
|
|
84
|
+
const invitationsBase = `${serviceUrl}/v1/orgs/${encodeURIComponent(args.org)}/invitations`;
|
|
85
|
+
if (action === 'list') {
|
|
86
|
+
const body = await serviceJson(base, token);
|
|
87
|
+
if (json) {
|
|
88
|
+
console.log(JSON.stringify({ ok: true, service: serviceUrl, org: args.org, members: body.members }));
|
|
89
|
+
return 0;
|
|
90
|
+
}
|
|
91
|
+
for (const member of body.members) {
|
|
92
|
+
console.log(`${member.email}\t${member.role}\t${member.subject}`);
|
|
93
|
+
}
|
|
94
|
+
return 0;
|
|
95
|
+
}
|
|
96
|
+
if (action === 'add' && args.subject && args.email) {
|
|
97
|
+
await serviceJson(base, token, {
|
|
98
|
+
method: 'POST',
|
|
99
|
+
headers: { 'content-type': 'application/json' },
|
|
100
|
+
body: JSON.stringify({
|
|
101
|
+
subject: args.subject,
|
|
102
|
+
email: args.email,
|
|
103
|
+
...(args.role ? { role: args.role } : {}),
|
|
104
|
+
}),
|
|
105
|
+
});
|
|
106
|
+
if (json) {
|
|
107
|
+
console.log(JSON.stringify({ ok: true, service: serviceUrl, org: args.org, email: args.email }));
|
|
108
|
+
return 0;
|
|
109
|
+
}
|
|
110
|
+
console.log(`added ${args.email}`);
|
|
111
|
+
return 0;
|
|
112
|
+
}
|
|
113
|
+
if (action === 'remove' && args.subject) {
|
|
114
|
+
await serviceJson(`${base}/${encodeURIComponent(args.subject)}`, token, { method: 'DELETE' });
|
|
115
|
+
if (json) {
|
|
116
|
+
console.log(JSON.stringify({
|
|
117
|
+
ok: true,
|
|
118
|
+
service: serviceUrl,
|
|
119
|
+
org: args.org,
|
|
120
|
+
subject: args.subject,
|
|
121
|
+
removed: true,
|
|
122
|
+
}));
|
|
123
|
+
return 0;
|
|
124
|
+
}
|
|
125
|
+
console.log(`removed ${args.subject}`);
|
|
126
|
+
return 0;
|
|
127
|
+
}
|
|
128
|
+
if (action === 'set-role' && args.subject && args.role) {
|
|
129
|
+
const body = await serviceJson(`${base}/${encodeURIComponent(args.subject)}`, token, {
|
|
130
|
+
method: 'PATCH',
|
|
131
|
+
headers: { 'content-type': 'application/json' },
|
|
132
|
+
body: JSON.stringify({ role: args.role }),
|
|
133
|
+
});
|
|
134
|
+
if (json) {
|
|
135
|
+
console.log(JSON.stringify({ ok: true, service: serviceUrl, org: args.org, member: body.member }));
|
|
136
|
+
return 0;
|
|
137
|
+
}
|
|
138
|
+
console.log(`set ${body.member.subject} to ${body.member.role}`);
|
|
139
|
+
return 0;
|
|
140
|
+
}
|
|
141
|
+
if (action === 'invitations') {
|
|
142
|
+
const body = await serviceJson(all ? `${invitationsBase}?all=true` : invitationsBase, token);
|
|
143
|
+
if (json) {
|
|
144
|
+
console.log(JSON.stringify({
|
|
145
|
+
ok: true,
|
|
146
|
+
service: serviceUrl,
|
|
147
|
+
org: args.org,
|
|
148
|
+
invitations: body.invitations,
|
|
149
|
+
}));
|
|
150
|
+
return 0;
|
|
151
|
+
}
|
|
152
|
+
for (const invitation of body.invitations) {
|
|
153
|
+
console.log(`${invitation.email}\t${invitation.role}\t${invitation.status}\t${invitation.expiresAt}`);
|
|
154
|
+
}
|
|
155
|
+
return 0;
|
|
156
|
+
}
|
|
157
|
+
if (action === 'revoke' && args.email) {
|
|
158
|
+
const body = await serviceJson(invitationsBase, token, {
|
|
159
|
+
method: 'DELETE',
|
|
160
|
+
headers: { 'content-type': 'application/json' },
|
|
161
|
+
body: JSON.stringify({ email: args.email }),
|
|
162
|
+
});
|
|
163
|
+
if (json) {
|
|
164
|
+
console.log(JSON.stringify({
|
|
165
|
+
ok: true,
|
|
166
|
+
service: serviceUrl,
|
|
167
|
+
org: args.org,
|
|
168
|
+
email: args.email,
|
|
169
|
+
revoked: body.revoked,
|
|
170
|
+
}));
|
|
171
|
+
return 0;
|
|
172
|
+
}
|
|
173
|
+
console.log(`revoked ${body.revoked} invitation(s) for ${args.email}`);
|
|
174
|
+
return 0;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
console.error(`members: ${error.message}`);
|
|
179
|
+
return 1;
|
|
180
|
+
}
|
|
181
|
+
usage();
|
|
182
|
+
return 2;
|
|
183
|
+
}
|
|
184
|
+
export function parseOrgArgs(rest) {
|
|
185
|
+
let serviceFlag;
|
|
186
|
+
let authFlag;
|
|
187
|
+
let displayName;
|
|
188
|
+
let name;
|
|
189
|
+
for (let i = 0; i < rest.length; i++) {
|
|
190
|
+
const arg = rest[i];
|
|
191
|
+
if (arg === '--service')
|
|
192
|
+
serviceFlag = rest[++i];
|
|
193
|
+
else if (arg === '--auth-token')
|
|
194
|
+
authFlag = rest[++i];
|
|
195
|
+
else if (arg === '--display-name')
|
|
196
|
+
displayName = rest[++i];
|
|
197
|
+
else if (arg === '--name')
|
|
198
|
+
name = rest[++i];
|
|
199
|
+
}
|
|
200
|
+
return {
|
|
201
|
+
...(serviceFlag !== undefined ? { serviceFlag } : {}),
|
|
202
|
+
...(authFlag !== undefined ? { authFlag } : {}),
|
|
203
|
+
...(displayName !== undefined ? { displayName } : {}),
|
|
204
|
+
...(name !== undefined ? { name } : {}),
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
export function parseMemberArgs(rest) {
|
|
208
|
+
let serviceFlag;
|
|
209
|
+
let authFlag;
|
|
210
|
+
let org;
|
|
211
|
+
let subject;
|
|
212
|
+
let email;
|
|
213
|
+
let role;
|
|
214
|
+
for (let i = 0; i < rest.length; i++) {
|
|
215
|
+
const arg = rest[i];
|
|
216
|
+
if (arg === '--service')
|
|
217
|
+
serviceFlag = rest[++i];
|
|
218
|
+
else if (arg === '--auth-token')
|
|
219
|
+
authFlag = rest[++i];
|
|
220
|
+
else if (arg === '--org')
|
|
221
|
+
org = rest[++i];
|
|
222
|
+
else if (arg === '--subject')
|
|
223
|
+
subject = rest[++i];
|
|
224
|
+
else if (arg === '--email')
|
|
225
|
+
email = rest[++i];
|
|
226
|
+
else if (arg === '--role') {
|
|
227
|
+
const value = rest[++i];
|
|
228
|
+
if (value === 'owner' || value === 'developer')
|
|
229
|
+
role = value;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return {
|
|
233
|
+
...(serviceFlag !== undefined ? { serviceFlag } : {}),
|
|
234
|
+
...(authFlag !== undefined ? { authFlag } : {}),
|
|
235
|
+
...(org !== undefined ? { org } : {}),
|
|
236
|
+
...(subject !== undefined ? { subject } : {}),
|
|
237
|
+
...(email !== undefined ? { email } : {}),
|
|
238
|
+
...(role !== undefined ? { role } : {}),
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=org-admin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-admin.js","sourceRoot":"","sources":["../../src/commands/org-admin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,IAAuB,EACvB,GAAsB,EACtB,IAAY;IAEZ,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1C,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACxE,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,MAAM,wBAAwB,CAAC;QAC3D,WAAW;QACX,QAAQ;QACR,GAAG;QACH,IAAI;KACL,CAAC,CAAC;IACH,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC;QACH,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,MAAM,WAAW,CAG3B,GAAG,UAAU,UAAU,EAAE,KAAK,CAAC,CAAC;YACnC,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBAChF,OAAO,CAAC,CAAC;YACX,CAAC;YACD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC,CAAC;YAClF,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,MAAM,KAAK,QAAQ,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YACnD,MAAM,IAAI,GAAG,MAAM,WAAW,CAC5B,GAAG,UAAU,UAAU,EACvB,KAAK,EACL;gBACE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;aACnF,CACF,CAAC;YACF,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC9E,OAAO,CAAC,CAAC;YACX,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACxC,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,MAAM,KAAK,QAAQ,IAAI,SAAS,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACzE,MAAM,IAAI,GAAG,MAAM,WAAW,CAC5B,GAAG,UAAU,YAAY,kBAAkB,CAAC,SAAS,CAAC,EAAE,EACxD,KAAK,EACL;gBACE,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;aAC5C,CACF,CAAC;YACF,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC9E,OAAO,CAAC,CAAC;YACX,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,GAAG,CAAC,CAAC;YAC7E,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,SAAU,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,KAAK,EAAE,CAAC;IACR,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAuB,EACvB,GAAsB,EACtB,IAAY;IAEZ,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/B,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC5C,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,MAAM,wBAAwB,CAAC;QAC3D,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,GAAG;QACH,IAAI;KACL,CAAC,CAAC;IACH,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;IACxD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,GAAG,UAAU,YAAY,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;QAC7E,MAAM,eAAe,GAAG,GAAG,UAAU,YAAY,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;QAC5F,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,MAAM,WAAW,CAG3B,IAAI,EAAE,KAAK,CAAC,CAAC;YAChB,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CACxF,CAAC;gBACF,OAAO,CAAC,CAAC;YACX,CAAC;YACD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YACpE,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACnD,MAAM,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;gBAC7B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC1C,CAAC;aACH,CAAC,CAAC;YACH,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CACpF,CAAC;gBACF,OAAO,CAAC,CAAC;YACX,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACnC,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxC,MAAM,WAAW,CAAC,GAAG,IAAI,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC9F,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC;oBACb,EAAE,EAAE,IAAI;oBACR,OAAO,EAAE,UAAU;oBACnB,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,OAAO,EAAE,IAAI;iBACd,CAAC,CACH,CAAC;gBACF,OAAO,CAAC,CAAC;YACX,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACvC,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACvD,MAAM,IAAI,GAAG,MAAM,WAAW,CAG3B,GAAG,IAAI,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE;gBACvD,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;aAC1C,CAAC,CAAC;YACH,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CACtF,CAAC;gBACF,OAAO,CAAC,CAAC;YACX,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACjE,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,MAAM,WAAW,CAS3B,GAAG,CAAC,CAAC,CAAC,GAAG,eAAe,WAAW,CAAC,CAAC,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;YACjE,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC;oBACb,EAAE,EAAE,IAAI;oBACR,OAAO,EAAE,UAAU;oBACnB,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,WAAW,EAAE,IAAI,CAAC,WAAW;iBAC9B,CAAC,CACH,CAAC;gBACF,OAAO,CAAC,CAAC;YACX,CAAC;YACD,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC1C,OAAO,CAAC,GAAG,CACT,GAAG,UAAU,CAAC,KAAK,KAAK,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,MAAM,KAAK,UAAU,CAAC,SAAS,EAAE,CACzF,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAgC,eAAe,EAAE,KAAK,EAAE;gBACpF,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;aAC5C,CAAC,CAAC;YACH,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC;oBACb,EAAE,EAAE,IAAI;oBACR,OAAO,EAAE,UAAU;oBACnB,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;iBACtB,CAAC,CACH,CAAC;gBACF,OAAO,CAAC,CAAC;YACX,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,OAAO,sBAAsB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACvE,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,YAAa,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,KAAK,EAAE,CAAC;IACR,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAuB;IAMlD,IAAI,WAA+B,CAAC;IACpC,IAAI,QAA4B,CAAC;IACjC,IAAI,WAA+B,CAAC;IACpC,IAAI,IAAwB,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,WAAW;YAAE,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;aAC5C,IAAI,GAAG,KAAK,cAAc;YAAE,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;aACjD,IAAI,GAAG,KAAK,gBAAgB;YAAE,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;aACtD,IAAI,GAAG,KAAK,QAAQ;YAAE,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO;QACL,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAuB;IAQrD,IAAI,WAA+B,CAAC;IACpC,IAAI,QAA4B,CAAC;IACjC,IAAI,GAAuB,CAAC;IAC5B,IAAI,OAA2B,CAAC;IAChC,IAAI,KAAyB,CAAC;IAC9B,IAAI,IAAuC,CAAC;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,WAAW;YAAE,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;aAC5C,IAAI,GAAG,KAAK,cAAc;YAAE,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;aACjD,IAAI,GAAG,KAAK,OAAO;YAAE,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;aACrC,IAAI,GAAG,KAAK,WAAW;YAAE,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;aAC7C,IAAI,GAAG,KAAK,SAAS;YAAE,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;aACzC,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,WAAW;gBAAE,IAAI,GAAG,KAAK,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,OAAO;QACL,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy-ops.d.ts","sourceRoot":"","sources":["../../src/commands/policy-ops.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"policy-ops.d.ts","sourceRoot":"","sources":["../../src/commands/policy-ops.ts"],"names":[],"mappings":"AAyCA,wBAAsB,SAAS,CAC7B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,GAAE,MAAkB,GACvB,OAAO,CAAC,MAAM,CAAC,CAkDjB"}
|