@armoriq/sdk-dev 0.2.14 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/_build_env.d.ts +11 -18
  2. package/dist/_build_env.d.ts.map +1 -1
  3. package/dist/_build_env.js +18 -6
  4. package/dist/_build_env.js.map +1 -1
  5. package/dist/cli/commands/auth.d.ts +15 -0
  6. package/dist/cli/commands/auth.d.ts.map +1 -0
  7. package/dist/cli/commands/auth.js +259 -0
  8. package/dist/cli/commands/auth.js.map +1 -0
  9. package/dist/cli/commands/keys.d.ts +14 -0
  10. package/dist/cli/commands/keys.d.ts.map +1 -0
  11. package/dist/cli/commands/keys.js +132 -0
  12. package/dist/cli/commands/keys.js.map +1 -0
  13. package/dist/cli/commands/orgs.d.ts +10 -0
  14. package/dist/cli/commands/orgs.d.ts.map +1 -0
  15. package/dist/cli/commands/orgs.js +152 -0
  16. package/dist/cli/commands/orgs.js.map +1 -0
  17. package/dist/cli/commands/status.d.ts +9 -0
  18. package/dist/cli/commands/status.d.ts.map +1 -0
  19. package/dist/cli/commands/status.js +103 -0
  20. package/dist/cli/commands/status.js.map +1 -0
  21. package/dist/cli/index.d.ts +15 -0
  22. package/dist/cli/index.d.ts.map +1 -0
  23. package/dist/cli/index.js +141 -0
  24. package/dist/cli/index.js.map +1 -0
  25. package/dist/cli/state.d.ts +22 -0
  26. package/dist/cli/state.d.ts.map +1 -0
  27. package/dist/cli/state.js +91 -0
  28. package/dist/cli/state.js.map +1 -0
  29. package/dist/cli/util.d.ts +19 -0
  30. package/dist/cli/util.d.ts.map +1 -0
  31. package/dist/cli/util.js +107 -0
  32. package/dist/cli/util.js.map +1 -0
  33. package/dist/client.d.ts +72 -13
  34. package/dist/client.d.ts.map +1 -1
  35. package/dist/client.js +323 -26
  36. package/dist/client.js.map +1 -1
  37. package/dist/config.d.ts +64 -0
  38. package/dist/config.d.ts.map +1 -0
  39. package/dist/config.js +215 -0
  40. package/dist/config.js.map +1 -0
  41. package/dist/exceptions.d.ts +4 -2
  42. package/dist/exceptions.d.ts.map +1 -1
  43. package/dist/exceptions.js +6 -2
  44. package/dist/exceptions.js.map +1 -1
  45. package/dist/index.d.ts +6 -3
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +17 -2
  48. package/dist/index.js.map +1 -1
  49. package/dist/integrations/google_adk.d.ts +107 -0
  50. package/dist/integrations/google_adk.d.ts.map +1 -0
  51. package/dist/integrations/google_adk.js +301 -0
  52. package/dist/integrations/google_adk.js.map +1 -0
  53. package/dist/models.d.ts +36 -2
  54. package/dist/models.d.ts.map +1 -1
  55. package/dist/plan_builder.d.ts +53 -0
  56. package/dist/plan_builder.d.ts.map +1 -0
  57. package/dist/plan_builder.js +110 -0
  58. package/dist/plan_builder.js.map +1 -0
  59. package/dist/session.d.ts +75 -0
  60. package/dist/session.d.ts.map +1 -0
  61. package/dist/session.js +486 -0
  62. package/dist/session.js.map +1 -0
  63. package/package.json +9 -2
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ /**
3
+ * armoriq orgs / switch-org — list and switch ArmorIQ organizations.
4
+ * Mirrors armoriq_sdk/cli.py:cmd_orgs / cmd_switch_org.
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ var __importDefault = (this && this.__importDefault) || function (mod) {
40
+ return (mod && mod.__esModule) ? mod : { "default": mod };
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.cmdOrgs = cmdOrgs;
44
+ exports.cmdSwitchOrg = cmdSwitchOrg;
45
+ const axios_1 = __importDefault(require("axios"));
46
+ const credentials_1 = require("../../credentials");
47
+ const util_1 = require("../util");
48
+ const state_1 = require("../state");
49
+ const fs = __importStar(require("fs"));
50
+ async function cmdOrgs() {
51
+ const creds = (0, util_1.requireCredentials)();
52
+ const url = `${(0, util_1.backendBase)()}/iap/sdk/orgs`;
53
+ let response;
54
+ try {
55
+ response = await axios_1.default.get(url, {
56
+ headers: { 'X-API-Key': creds.apiKey },
57
+ timeout: 12000,
58
+ validateStatus: () => true,
59
+ });
60
+ }
61
+ catch (e) {
62
+ throw new util_1.CLIError(`Failed to reach ${url}: ${e.message}`);
63
+ }
64
+ if (response.status === 401) {
65
+ throw new util_1.CLIError('API key rejected (401). Try `armoriq login` again.');
66
+ }
67
+ if (response.status >= 400) {
68
+ throw new util_1.CLIError(`Failed to list orgs (HTTP ${response.status}).`);
69
+ }
70
+ const orgs = response.data?.data ?? [];
71
+ if (orgs.length === 0) {
72
+ (0, util_1.out)("You don't belong to any organizations.");
73
+ return 0;
74
+ }
75
+ const nameW = Math.max('NAME'.length, ...orgs.map((o) => (o.name ?? '').length));
76
+ const roleW = Math.max('ROLE'.length, ...orgs.map((o) => (o.userRole ?? '').length));
77
+ const header = ` ${'NAME'.padEnd(nameW)} ${'ORG_ID'.padEnd(36)} ${'ROLE'.padEnd(roleW)} MEMBERS`;
78
+ (0, util_1.out)(header);
79
+ (0, util_1.out)(' ' + '-'.repeat(header.length - 2));
80
+ for (const org of orgs) {
81
+ const marker = org.active ? `${util_1.CHECK} ` : ' ';
82
+ const name = (org.name ?? '').padEnd(nameW);
83
+ const orgId = (org.orgId ?? '').padEnd(36);
84
+ const role = (org.userRole ?? '').padEnd(roleW);
85
+ const members = String(org.memberCount ?? 0);
86
+ (0, util_1.out)(`${marker}${name} ${orgId} ${role} ${members}`);
87
+ }
88
+ (0, util_1.out)('');
89
+ (0, util_1.out)(`Active org is marked with ${util_1.CHECK}. Switch with \`armoriq switch-org <name-or-id>\`.`);
90
+ (0, state_1.appendLog)('orgs', { count: orgs.length });
91
+ return 0;
92
+ }
93
+ async function cmdSwitchOrg(args) {
94
+ const creds = (0, util_1.requireCredentials)();
95
+ const target = (args.org ?? '').trim();
96
+ if (!target)
97
+ throw new util_1.CLIError('Target org (id or name) is required.');
98
+ const url = `${(0, util_1.backendBase)()}/iap/sdk/switch-org`;
99
+ const body = { org: target };
100
+ if (args.keyName)
101
+ body.keyName = args.keyName;
102
+ let response;
103
+ try {
104
+ response = await axios_1.default.post(url, body, {
105
+ headers: { 'X-API-Key': creds.apiKey, 'Content-Type': 'application/json' },
106
+ timeout: 12000,
107
+ validateStatus: () => true,
108
+ });
109
+ }
110
+ catch (e) {
111
+ throw new util_1.CLIError(`Failed to reach ${url}: ${e.message}`);
112
+ }
113
+ if (response.status === 401)
114
+ throw new util_1.CLIError('API key rejected (401). Try `armoriq login` again.');
115
+ if (response.status === 403)
116
+ throw new util_1.CLIError(`You are not a member of '${target}'.`);
117
+ if (response.status === 404)
118
+ throw new util_1.CLIError(`No organization named '${target}' (or matching that id).`);
119
+ if (response.status === 400) {
120
+ throw new util_1.CLIError(response.data?.message || 'Bad request.');
121
+ }
122
+ if (response.status >= 400) {
123
+ throw new util_1.CLIError(`Switch failed (HTTP ${response.status}).`);
124
+ }
125
+ const payload = response.data ?? {};
126
+ const newApiKey = payload.api_key;
127
+ const newOrgId = payload.org_id;
128
+ const newOrgName = payload.org_name ?? target;
129
+ if (!newApiKey || !newOrgId) {
130
+ throw new util_1.CLIError('Switch response missing api_key or org_id.');
131
+ }
132
+ (0, credentials_1.saveCredentials)({
133
+ apiKey: newApiKey,
134
+ email: creds.email,
135
+ userId: creds.userId,
136
+ orgId: newOrgId,
137
+ savedAt: new Date().toISOString(),
138
+ });
139
+ // Agent registration (state.json) was org-scoped — invalidate it so the
140
+ // next step is obvious.
141
+ const stateExisted = fs.existsSync(state_1.STATE_FILE);
142
+ if (stateExisted)
143
+ (0, state_1.clearState)();
144
+ (0, util_1.out)(`${util_1.CHECK} Switched to ${newOrgName} (org_id=${newOrgId})`);
145
+ (0, util_1.out)(`${util_1.CHECK} New API key saved.`);
146
+ if (stateExisted) {
147
+ (0, util_1.out)(' Previous agent registration cleared. Re-run `armoriq register` in this org.');
148
+ }
149
+ (0, state_1.appendLog)('switch-org', { org_id: newOrgId, org_name: newOrgName, cleared_state: stateExisted });
150
+ return 0;
151
+ }
152
+ //# sourceMappingURL=orgs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orgs.js","sourceRoot":"","sources":["../../../src/cli/commands/orgs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * armoriq status / logs — local-only commands that read the cached state
3
+ * and CLI log file. Mirrors armoriq_sdk/cli.py:cmd_status / cmd_logs.
4
+ */
5
+ export declare function cmdStatus(): number;
6
+ export declare function cmdLogs(args: {
7
+ follow?: boolean;
8
+ }): number;
9
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,wBAAgB,SAAS,IAAI,MAAM,CAclC;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAsC1D"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ /**
3
+ * armoriq status / logs — local-only commands that read the cached state
4
+ * and CLI log file. Mirrors armoriq_sdk/cli.py:cmd_status / cmd_logs.
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.cmdStatus = cmdStatus;
41
+ exports.cmdLogs = cmdLogs;
42
+ const fs = __importStar(require("fs"));
43
+ const util_1 = require("../util");
44
+ const state_1 = require("../state");
45
+ function cmdStatus() {
46
+ const state = (0, state_1.loadState)();
47
+ if (!state || Object.keys(state).length === 0) {
48
+ (0, util_1.out)('No local registration state found. Run `armoriq register` first.');
49
+ return 1;
50
+ }
51
+ (0, util_1.out)(`Agent: ${state.agent_id ?? 'unknown'}`);
52
+ (0, util_1.out)(`User: ${state.user_id ?? 'unknown'}`);
53
+ (0, util_1.out)(`Environment: ${state.environment ?? 'unknown'}`);
54
+ (0, util_1.out)(`Registered at: ${state.registered_at ?? 'unknown'}`);
55
+ (0, util_1.out)(`Proxy endpoint: ${state.proxy_endpoint ?? 'unknown'}`);
56
+ const mcpServers = state.mcp_servers ?? [];
57
+ (0, util_1.out)(`MCP servers: ${mcpServers.length > 0 ? mcpServers.join(', ') : '(none)'}`);
58
+ return 0;
59
+ }
60
+ function cmdLogs(args) {
61
+ if (!fs.existsSync(state_1.LOG_FILE)) {
62
+ (0, util_1.out)('No CLI logs found yet.');
63
+ return 0;
64
+ }
65
+ const tailFile = (offset) => {
66
+ const stat = fs.statSync(state_1.LOG_FILE);
67
+ if (stat.size <= offset)
68
+ return offset;
69
+ const fd = fs.openSync(state_1.LOG_FILE, 'r');
70
+ const buf = Buffer.alloc(stat.size - offset);
71
+ fs.readSync(fd, buf, 0, buf.length, offset);
72
+ fs.closeSync(fd);
73
+ for (const line of buf.toString('utf-8').split('\n')) {
74
+ const trimmed = line.trim();
75
+ if (!trimmed)
76
+ continue;
77
+ try {
78
+ const event = JSON.parse(trimmed);
79
+ (0, util_1.out)(`[${event.timestamp ?? ''}] ${event.event ?? ''}: ${JSON.stringify(event.details ?? {})}`);
80
+ }
81
+ catch {
82
+ (0, util_1.out)(trimmed);
83
+ }
84
+ }
85
+ return stat.size;
86
+ };
87
+ let offset = tailFile(0);
88
+ if (!args.follow)
89
+ return 0;
90
+ // Simple poll loop for --follow; ctrl-C exits.
91
+ const interval = setInterval(() => {
92
+ offset = tailFile(offset);
93
+ }, 1000);
94
+ // Return a never-resolving promise via process exit hook isn't useful here;
95
+ // the user expects --follow to block. Keep the process alive until SIGINT.
96
+ process.on('SIGINT', () => {
97
+ clearInterval(interval);
98
+ process.exit(0);
99
+ });
100
+ // Block forever — this function is the entrypoint of the command.
101
+ return 0;
102
+ }
103
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * armoriq — TypeScript CLI for the ArmorIQ SDK.
4
+ *
5
+ * Mirrors the PY CLI command surface from armoriq_sdk/cli.py and cli_auth.py.
6
+ * Supports: login, logout, whoami, orgs, switch-org, status, logs, keys.
7
+ *
8
+ * Note: `init`, `validate`, and `register` (which need MCP JSON-RPC discovery)
9
+ * are not yet implemented in TS — direct users to the PY CLI for those flows
10
+ * (or stay tuned for follow-up parity work).
11
+ */
12
+ type Argv = string[];
13
+ declare function run(argv: Argv): Promise<number>;
14
+ export { run as runCli };
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AA8BH,KAAK,IAAI,GAAG,MAAM,EAAE,CAAC;AAcrB,iBAAe,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CA2E9C;AAgBD,OAAO,EAAE,GAAG,IAAI,MAAM,EAAE,CAAC"}
@@ -0,0 +1,141 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * armoriq — TypeScript CLI for the ArmorIQ SDK.
5
+ *
6
+ * Mirrors the PY CLI command surface from armoriq_sdk/cli.py and cli_auth.py.
7
+ * Supports: login, logout, whoami, orgs, switch-org, status, logs, keys.
8
+ *
9
+ * Note: `init`, `validate`, and `register` (which need MCP JSON-RPC discovery)
10
+ * are not yet implemented in TS — direct users to the PY CLI for those flows
11
+ * (or stay tuned for follow-up parity work).
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.runCli = run;
15
+ const util_1 = require("./util");
16
+ const HELP = `
17
+ armoriq — ArmorIQ SDK CLI
18
+
19
+ Usage: armoriq <command> [options]
20
+
21
+ Commands:
22
+ login [--org <name>] OAuth device-code login flow
23
+ logout Remove cached credentials
24
+ whoami Show the currently logged-in account
25
+
26
+ orgs List organizations you belong to
27
+ switch-org <name-or-id> Switch the active org and rotate API key
28
+ [--key-name <name>]
29
+
30
+ keys list List API keys for this account
31
+ keys revoke <id> Revoke a single API key
32
+ keys prune [--yes] Revoke expired / unused (>90d) keys
33
+
34
+ status Show local CLI state (agent, env, MCPs)
35
+ logs [--follow] Tail the CLI log file
36
+
37
+ help Show this help
38
+
39
+ Use \`armoriq help <command>\` for command-specific options.
40
+ `;
41
+ function parseFlag(args, name, hasValue = true) {
42
+ for (let i = 0; i < args.length; i++) {
43
+ if (args[i] === `--${name}`) {
44
+ if (!hasValue)
45
+ return true;
46
+ const v = args[i + 1];
47
+ args.splice(i, 2);
48
+ return v;
49
+ }
50
+ }
51
+ return undefined;
52
+ }
53
+ async function run(argv) {
54
+ const [command, ...rest] = argv;
55
+ if (!command || command === 'help' || command === '--help' || command === '-h') {
56
+ (0, util_1.out)(HELP);
57
+ return 0;
58
+ }
59
+ switch (command) {
60
+ case 'login': {
61
+ const { cmdLogin } = await import('./commands/auth.js');
62
+ const org = parseFlag(rest, 'org');
63
+ const backend = parseFlag(rest, 'backend');
64
+ return cmdLogin({ org, backend });
65
+ }
66
+ case 'logout': {
67
+ const { cmdLogout } = await import('./commands/auth.js');
68
+ return cmdLogout();
69
+ }
70
+ case 'whoami': {
71
+ const { cmdWhoami } = await import('./commands/auth.js');
72
+ return cmdWhoami();
73
+ }
74
+ case 'orgs': {
75
+ const { cmdOrgs } = await import('./commands/orgs.js');
76
+ return cmdOrgs();
77
+ }
78
+ case 'switch-org': {
79
+ const { cmdSwitchOrg } = await import('./commands/orgs.js');
80
+ const keyName = parseFlag(rest, 'key-name');
81
+ const target = rest.find((a) => !a.startsWith('--'));
82
+ if (!target)
83
+ throw new util_1.CLIError('Usage: armoriq switch-org <name-or-id>');
84
+ return cmdSwitchOrg({ org: target, keyName });
85
+ }
86
+ case 'keys': {
87
+ const sub = rest[0];
88
+ const { cmdKeysList, cmdKeysRevoke, cmdKeysPrune } = await import('./commands/keys.js');
89
+ if (sub === 'list')
90
+ return cmdKeysList();
91
+ if (sub === 'revoke') {
92
+ const id = rest[1];
93
+ if (!id)
94
+ throw new util_1.CLIError('Usage: armoriq keys revoke <id>');
95
+ return cmdKeysRevoke({ id });
96
+ }
97
+ if (sub === 'prune') {
98
+ const yes = Boolean(parseFlag(rest, 'yes', false));
99
+ return cmdKeysPrune({ yes });
100
+ }
101
+ (0, util_1.out)('Usage: armoriq keys list | revoke <id> | prune [--yes]');
102
+ return 1;
103
+ }
104
+ case 'status': {
105
+ const { cmdStatus } = await import('./commands/status.js');
106
+ return cmdStatus();
107
+ }
108
+ case 'logs': {
109
+ const { cmdLogs } = await import('./commands/status.js');
110
+ const follow = Boolean(parseFlag(rest, 'follow', false));
111
+ return cmdLogs({ follow });
112
+ }
113
+ case 'init':
114
+ case 'validate':
115
+ case 'register': {
116
+ (0, util_1.out)(`'armoriq ${command}' is not yet implemented in the TypeScript CLI.\n` +
117
+ 'Use the Python CLI for now (`pip install armoriq-sdk` then `armoriq ' +
118
+ command +
119
+ '`), or follow this issue: https://github.com/armoriq/armoriq-sdk-customer-ts/issues/40');
120
+ return 1;
121
+ }
122
+ default:
123
+ (0, util_1.out)(`Unknown command: ${command}`);
124
+ (0, util_1.out)(HELP);
125
+ return 1;
126
+ }
127
+ }
128
+ if (require.main === module) {
129
+ const argv = process.argv.slice(2);
130
+ run(argv)
131
+ .then((code) => process.exit(code))
132
+ .catch((err) => {
133
+ if (err instanceof util_1.CLIError) {
134
+ (0, util_1.out)(` ${util_1.CROSS} ${err.message}`);
135
+ process.exit(1);
136
+ }
137
+ (0, util_1.out)(` ${util_1.CROSS} Unexpected error: ${err.message}`);
138
+ process.exit(1);
139
+ });
140
+ }
141
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Local CLI state ($HOME/.armoriq/{state,cli.log}.{json,jsonl}).
3
+ * Mirrors the layout used by armoriq_sdk/cli.py so PY and TS CLIs share the same files.
4
+ */
5
+ export declare const ARMORIQ_DIR: string;
6
+ export declare const STATE_FILE: string;
7
+ export declare const LOG_FILE: string;
8
+ export type CliState = {
9
+ registered_at?: string;
10
+ config_path?: string;
11
+ agent_id?: string;
12
+ user_id?: string;
13
+ environment?: string;
14
+ proxy_endpoint?: string;
15
+ mcp_servers?: string[];
16
+ [k: string]: unknown;
17
+ };
18
+ export declare function loadState(): CliState;
19
+ export declare function saveState(state: CliState): void;
20
+ export declare function clearState(): boolean;
21
+ export declare function appendLog(event: string, details?: Record<string, unknown>): void;
22
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/cli/state.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,eAAO,MAAM,WAAW,QAAsC,CAAC;AAC/D,eAAO,MAAM,UAAU,QAAuC,CAAC;AAC/D,eAAO,MAAM,QAAQ,QAAoC,CAAC;AAE1D,MAAM,MAAM,QAAQ,GAAG;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB,CAAC;AAEF,wBAAgB,SAAS,IAAI,QAAQ,CAOpC;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAG/C;AAED,wBAAgB,UAAU,IAAI,OAAO,CAUpC;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,IAAI,CAYpF"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ /**
3
+ * Local CLI state ($HOME/.armoriq/{state,cli.log}.{json,jsonl}).
4
+ * Mirrors the layout used by armoriq_sdk/cli.py so PY and TS CLIs share the same files.
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.LOG_FILE = exports.STATE_FILE = exports.ARMORIQ_DIR = void 0;
41
+ exports.loadState = loadState;
42
+ exports.saveState = saveState;
43
+ exports.clearState = clearState;
44
+ exports.appendLog = appendLog;
45
+ const fs = __importStar(require("fs"));
46
+ const os = __importStar(require("os"));
47
+ const path = __importStar(require("path"));
48
+ exports.ARMORIQ_DIR = path.join(os.homedir(), '.armoriq');
49
+ exports.STATE_FILE = path.join(exports.ARMORIQ_DIR, 'state.json');
50
+ exports.LOG_FILE = path.join(exports.ARMORIQ_DIR, 'cli.log');
51
+ function loadState() {
52
+ try {
53
+ if (!fs.existsSync(exports.STATE_FILE))
54
+ return {};
55
+ return JSON.parse(fs.readFileSync(exports.STATE_FILE, 'utf-8'));
56
+ }
57
+ catch {
58
+ return {};
59
+ }
60
+ }
61
+ function saveState(state) {
62
+ fs.mkdirSync(exports.ARMORIQ_DIR, { recursive: true });
63
+ fs.writeFileSync(exports.STATE_FILE, JSON.stringify(state, null, 2) + '\n', { mode: 0o600 });
64
+ }
65
+ function clearState() {
66
+ try {
67
+ if (fs.existsSync(exports.STATE_FILE)) {
68
+ fs.unlinkSync(exports.STATE_FILE);
69
+ return true;
70
+ }
71
+ return false;
72
+ }
73
+ catch {
74
+ return false;
75
+ }
76
+ }
77
+ function appendLog(event, details = {}) {
78
+ try {
79
+ fs.mkdirSync(exports.ARMORIQ_DIR, { recursive: true });
80
+ const entry = JSON.stringify({
81
+ timestamp: new Date().toISOString(),
82
+ event,
83
+ details,
84
+ });
85
+ fs.appendFileSync(exports.LOG_FILE, entry + '\n');
86
+ }
87
+ catch {
88
+ // best-effort; never throw on log write
89
+ }
90
+ }
91
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/cli/state.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBH,8BAOC;AAED,8BAGC;AAED,gCAUC;AAED,8BAYC;AAzDD,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAEhB,QAAA,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AAClD,QAAA,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAW,EAAE,YAAY,CAAC,CAAC;AAClD,QAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAW,EAAE,SAAS,CAAC,CAAC;AAa1D,SAAgB,SAAS;IACvB,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,kBAAU,CAAC;YAAE,OAAO,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,kBAAU,EAAE,OAAO,CAAC,CAAa,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAgB,SAAS,CAAC,KAAe;IACvC,EAAE,CAAC,SAAS,CAAC,mBAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,EAAE,CAAC,aAAa,CAAC,kBAAU,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACvF,CAAC;AAED,SAAgB,UAAU;IACxB,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,kBAAU,CAAC,EAAE,CAAC;YAC9B,EAAE,CAAC,UAAU,CAAC,kBAAU,CAAC,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAgB,SAAS,CAAC,KAAa,EAAE,UAAmC,EAAE;IAC5E,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,mBAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;YAC3B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,KAAK;YACL,OAAO;SACR,CAAC,CAAC;QACH,EAAE,CAAC,cAAc,CAAC,gBAAQ,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,wCAAwC;IAC1C,CAAC;AACH,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Shared CLI utilities: console formatting, prompts, env-driven endpoint
3
+ * resolution, and the "require credentials" guard.
4
+ */
5
+ import { Credentials } from '../credentials';
6
+ export declare const CHECK = "\u001B[32m\u2714\u001B[0m";
7
+ export declare const CROSS = "\u001B[31m\u2718\u001B[0m";
8
+ export declare const WARN = "\u001B[33m!\u001B[0m";
9
+ export declare class CLIError extends Error {
10
+ constructor(message: string);
11
+ }
12
+ export declare function out(message?: string): void;
13
+ export declare function maskSecret(secret: string): string;
14
+ export declare function prompt(question: string, defaultValue?: string): Promise<string>;
15
+ export declare function promptYesNo(question: string, defaultValue?: boolean): Promise<boolean>;
16
+ export declare function backendBase(): string;
17
+ export declare function proxyBase(): string;
18
+ export declare function requireCredentials(): Credentials;
19
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/cli/util.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAuC,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlF,eAAO,MAAM,KAAK,8BAAqB,CAAC;AACxC,eAAO,MAAM,KAAK,8BAAqB,CAAC;AACxC,eAAO,MAAM,IAAI,yBAAqB,CAAC;AAEvC,qBAAa,QAAS,SAAQ,KAAK;gBACrB,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAgB,GAAG,CAAC,OAAO,GAAE,MAAW,GAAG,IAAI,CAE9C;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIjD;AAED,wBAAsB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASrF;AAED,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,GAAE,OAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAKnG;AAED,wBAAgB,WAAW,IAAI,MAAM,CAIpC;AAED,wBAAgB,SAAS,IAAI,MAAM,CAIlC;AAED,wBAAgB,kBAAkB,IAAI,WAAW,CAQhD"}