@canaryai/cli 0.2.9 → 0.2.12

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 (58) hide show
  1. package/dist/{chunk-C2PGZRYK.js → chunk-CEW4BDXD.js} +26 -7
  2. package/dist/chunk-CEW4BDXD.js.map +1 -0
  3. package/dist/chunk-ERSNYLMZ.js +229 -0
  4. package/dist/chunk-ERSNYLMZ.js.map +1 -0
  5. package/dist/{chunk-XGO62PO2.js → chunk-MSMC6UXW.js} +198 -11
  6. package/dist/{chunk-XGO62PO2.js.map → chunk-MSMC6UXW.js.map} +1 -1
  7. package/dist/{chunk-LC7ZVXPH.js → chunk-Q7WFBG5C.js} +2 -2
  8. package/dist/{debug-workflow-I3F36JBL.js → debug-workflow-53ULOFJC.js} +4 -4
  9. package/dist/{docs-REHST3YB.js → docs-BEE3LOCO.js} +2 -2
  10. package/dist/{feature-flag-3HB5NTMY.js → feature-flag-CYTDV4ZB.js} +2 -2
  11. package/dist/index.js +61 -139
  12. package/dist/index.js.map +1 -1
  13. package/dist/init-M6I3MG3D.js +146 -0
  14. package/dist/init-M6I3MG3D.js.map +1 -0
  15. package/dist/{issues-YU57CHXS.js → issues-NLM72HLU.js} +2 -2
  16. package/dist/{knobs-QJ4IBLCT.js → knobs-O35GAU5M.js} +2 -2
  17. package/dist/list-4K4EIGAT.js +57 -0
  18. package/dist/list-4K4EIGAT.js.map +1 -0
  19. package/dist/local-NHXXPHZ3.js +63 -0
  20. package/dist/local-NHXXPHZ3.js.map +1 -0
  21. package/dist/{local-browser-MKTJ36KY.js → local-browser-VAZORCO3.js} +3 -3
  22. package/dist/login-ZLP64YQP.js +130 -0
  23. package/dist/login-ZLP64YQP.js.map +1 -0
  24. package/dist/{mcp-ZOKM2AUE.js → mcp-ZF5G5DCB.js} +4 -126
  25. package/dist/mcp-ZF5G5DCB.js.map +1 -0
  26. package/dist/{record-TNDBT3NY.js → record-V6QKFFH3.js} +6 -47
  27. package/dist/record-V6QKFFH3.js.map +1 -0
  28. package/dist/{release-L4IXOHDF.js → release-7TI7EIGD.js} +8 -4
  29. package/dist/release-7TI7EIGD.js.map +1 -0
  30. package/dist/{session-RNLKFS2Z.js → session-UGNJXRUW.js} +138 -70
  31. package/dist/session-UGNJXRUW.js.map +1 -0
  32. package/dist/skill-ORWAPBDW.js +424 -0
  33. package/dist/skill-ORWAPBDW.js.map +1 -0
  34. package/dist/{src-2WSMYBMJ.js → src-4VIDSK4A.js} +2 -2
  35. package/dist/start-E532F3BU.js +112 -0
  36. package/dist/start-E532F3BU.js.map +1 -0
  37. package/dist/workflow-HXIUXRFI.js +613 -0
  38. package/dist/workflow-HXIUXRFI.js.map +1 -0
  39. package/package.json +1 -1
  40. package/dist/chunk-C2PGZRYK.js.map +0 -1
  41. package/dist/chunk-DXIAHB72.js +0 -340
  42. package/dist/chunk-DXIAHB72.js.map +0 -1
  43. package/dist/chunk-QLFSJG5O.js +0 -93
  44. package/dist/chunk-QLFSJG5O.js.map +0 -1
  45. package/dist/mcp-ZOKM2AUE.js.map +0 -1
  46. package/dist/record-TNDBT3NY.js.map +0 -1
  47. package/dist/release-L4IXOHDF.js.map +0 -1
  48. package/dist/session-RNLKFS2Z.js.map +0 -1
  49. package/dist/skill-CZ7SHI3P.js +0 -156
  50. package/dist/skill-CZ7SHI3P.js.map +0 -1
  51. /package/dist/{chunk-LC7ZVXPH.js.map → chunk-Q7WFBG5C.js.map} +0 -0
  52. /package/dist/{debug-workflow-I3F36JBL.js.map → debug-workflow-53ULOFJC.js.map} +0 -0
  53. /package/dist/{docs-REHST3YB.js.map → docs-BEE3LOCO.js.map} +0 -0
  54. /package/dist/{feature-flag-3HB5NTMY.js.map → feature-flag-CYTDV4ZB.js.map} +0 -0
  55. /package/dist/{issues-YU57CHXS.js.map → issues-NLM72HLU.js.map} +0 -0
  56. /package/dist/{knobs-QJ4IBLCT.js.map → knobs-O35GAU5M.js.map} +0 -0
  57. /package/dist/{local-browser-MKTJ36KY.js.map → local-browser-VAZORCO3.js.map} +0 -0
  58. /package/dist/{src-2WSMYBMJ.js.map → src-4VIDSK4A.js.map} +0 -0
@@ -0,0 +1,112 @@
1
+ import { createRequire as __cr } from "module"; const require = __cr(import.meta.url);
2
+ import {
3
+ downloadStorageState,
4
+ fetchList,
5
+ promptChoice,
6
+ selectProperty
7
+ } from "./chunk-ERSNYLMZ.js";
8
+ import {
9
+ createSession
10
+ } from "./chunk-CEW4BDXD.js";
11
+ import {
12
+ resolveConfig
13
+ } from "./chunk-PWWQGYFG.js";
14
+ import "./chunk-XAA5VQ5N.js";
15
+ import "./chunk-VKVL7WBN.js";
16
+
17
+ // src/local/start.ts
18
+ import process from "process";
19
+ async function runLocalStart(argv) {
20
+ const config = await resolveConfig(argv);
21
+ const property = await selectProperty(config.apiUrl, config.token);
22
+ if (!property) {
23
+ process.exitCode = 1;
24
+ return;
25
+ }
26
+ const envs = await fetchList(
27
+ config.apiUrl,
28
+ config.token,
29
+ `/org/properties/${property.id}/environments/local`,
30
+ "items"
31
+ );
32
+ if (envs.length === 0) {
33
+ console.error("No local environments found. Run `canary local init` first.");
34
+ process.exitCode = 1;
35
+ return;
36
+ }
37
+ let selectedEnv;
38
+ if (envs.length === 1) {
39
+ selectedEnv = envs[0];
40
+ } else {
41
+ const picked = await promptChoice(
42
+ "Select a local environment:",
43
+ envs.map((e) => ({ label: `${e.name} \u2014 ${e.url}`, value: e }))
44
+ );
45
+ if (!picked) {
46
+ process.exitCode = 1;
47
+ return;
48
+ }
49
+ selectedEnv = picked;
50
+ }
51
+ const allCredentials = await fetchList(
52
+ config.apiUrl,
53
+ config.token,
54
+ "/org/credentials",
55
+ "items"
56
+ );
57
+ const envCredentials = allCredentials.filter(
58
+ (c) => c.propertyId === property.id
59
+ );
60
+ let storageStatePath;
61
+ let credentialName;
62
+ if (envCredentials.length > 0) {
63
+ let credential;
64
+ if (envCredentials.length === 1) {
65
+ credential = envCredentials[0];
66
+ } else {
67
+ const picked = await promptChoice(
68
+ "Select a credential:",
69
+ envCredentials.map((c) => ({ label: c.name, value: c }))
70
+ );
71
+ if (!picked) {
72
+ process.exitCode = 1;
73
+ return;
74
+ }
75
+ credential = picked;
76
+ }
77
+ credentialName = credential.name;
78
+ if (credential.storageStateS3Key) {
79
+ console.log("Loading saved login state...");
80
+ storageStatePath = await downloadStorageState({
81
+ apiUrl: config.apiUrl,
82
+ token: config.token,
83
+ propertyId: property.id,
84
+ credentialId: credential.id,
85
+ prefix: "local"
86
+ });
87
+ }
88
+ }
89
+ console.log(`Starting session at ${selectedEnv.url}...`);
90
+ const result = await createSession({
91
+ name: `local-${property.name}`,
92
+ url: selectedEnv.url,
93
+ storageStatePath,
94
+ credentialName
95
+ });
96
+ if (!result.ok || !result.data) {
97
+ console.error(`Failed to start session: ${result.error ?? "Unknown error"}`);
98
+ process.exitCode = 1;
99
+ return;
100
+ }
101
+ console.log(`
102
+ Session started: ${result.data.id}`);
103
+ console.log(` URL: ${selectedEnv.url}`);
104
+ if (credentialName) console.log(` Credential: ${credentialName}`);
105
+ if (storageStatePath) console.log(` Login state: loaded`);
106
+ console.log(`
107
+ Use \`canary session\` commands to interact with the browser.`);
108
+ }
109
+ export {
110
+ runLocalStart
111
+ };
112
+ //# sourceMappingURL=start-E532F3BU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/local/start.ts"],"sourcesContent":["/**\n * `canary local start` — Start a headed session for a local environment.\n *\n * @module\n */\n\nimport process from 'node:process';\nimport { resolveConfig } from '../auth.js';\nimport {\n selectProperty,\n promptChoice,\n fetchList,\n downloadStorageState,\n} from '../cli-helpers.js';\nimport { createSession } from '../session/daemon-client.js';\nimport type { CredentialListItem } from '../cli-helpers.js';\n\ninterface LocalEnvironment {\n id: string;\n name: string;\n url: string;\n propertyId: string;\n}\n\nexport async function runLocalStart(argv: string[]) {\n const config = await resolveConfig(argv);\n\n // Select property\n const property = await selectProperty(config.apiUrl, config.token);\n if (!property) {\n process.exitCode = 1;\n return;\n }\n\n // Get local environments for this property\n const envs = await fetchList<LocalEnvironment>(\n config.apiUrl,\n config.token,\n `/org/properties/${property.id}/environments/local`,\n 'items'\n );\n\n if (envs.length === 0) {\n console.error('No local environments found. Run `canary local init` first.');\n process.exitCode = 1;\n return;\n }\n\n let selectedEnv: LocalEnvironment;\n if (envs.length === 1) {\n selectedEnv = envs[0];\n } else {\n const picked = await promptChoice(\n 'Select a local environment:',\n envs.map((e) => ({ label: `${e.name} — ${e.url}`, value: e }))\n );\n if (!picked) {\n process.exitCode = 1;\n return;\n }\n selectedEnv = picked;\n }\n\n // Look up credentials for this environment\n const allCredentials = await fetchList<CredentialListItem>(\n config.apiUrl,\n config.token,\n '/org/credentials',\n 'items'\n );\n\n const envCredentials = allCredentials.filter(\n (c) => c.propertyId === property.id\n );\n\n let storageStatePath: string | undefined;\n let credentialName: string | undefined;\n\n if (envCredentials.length > 0) {\n // Pick a credential if multiple\n let credential: CredentialListItem;\n if (envCredentials.length === 1) {\n credential = envCredentials[0];\n } else {\n const picked = await promptChoice(\n 'Select a credential:',\n envCredentials.map((c) => ({ label: c.name, value: c }))\n );\n if (!picked) {\n process.exitCode = 1;\n return;\n }\n credential = picked;\n }\n\n credentialName = credential.name;\n\n // Download storage state if available\n if (credential.storageStateS3Key) {\n console.log('Loading saved login state...');\n storageStatePath = await downloadStorageState({\n apiUrl: config.apiUrl,\n token: config.token,\n propertyId: property.id,\n credentialId: credential.id,\n prefix: 'local',\n });\n }\n }\n\n // Create headed session\n console.log(`Starting session at ${selectedEnv.url}...`);\n const result = await createSession({\n name: `local-${property.name}`,\n url: selectedEnv.url,\n storageStatePath,\n credentialName,\n });\n\n if (!result.ok || !result.data) {\n console.error(`Failed to start session: ${result.error ?? 'Unknown error'}`);\n process.exitCode = 1;\n return;\n }\n\n console.log(`\\nSession started: ${result.data.id}`);\n console.log(` URL: ${selectedEnv.url}`);\n if (credentialName) console.log(` Credential: ${credentialName}`);\n if (storageStatePath) console.log(` Login state: loaded`);\n console.log(`\\nUse \\`canary session\\` commands to interact with the browser.`);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAMA,OAAO,aAAa;AAkBpB,eAAsB,cAAc,MAAgB;AAClD,QAAM,SAAS,MAAM,cAAc,IAAI;AAGvC,QAAM,WAAW,MAAM,eAAe,OAAO,QAAQ,OAAO,KAAK;AACjE,MAAI,CAAC,UAAU;AACb,YAAQ,WAAW;AACnB;AAAA,EACF;AAGA,QAAM,OAAO,MAAM;AAAA,IACjB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,mBAAmB,SAAS,EAAE;AAAA,IAC9B;AAAA,EACF;AAEA,MAAI,KAAK,WAAW,GAAG;AACrB,YAAQ,MAAM,6DAA6D;AAC3E,YAAQ,WAAW;AACnB;AAAA,EACF;AAEA,MAAI;AACJ,MAAI,KAAK,WAAW,GAAG;AACrB,kBAAc,KAAK,CAAC;AAAA,EACtB,OAAO;AACL,UAAM,SAAS,MAAM;AAAA,MACnB;AAAA,MACA,KAAK,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,EAAE,IAAI,WAAM,EAAE,GAAG,IAAI,OAAO,EAAE,EAAE;AAAA,IAC/D;AACA,QAAI,CAAC,QAAQ;AACX,cAAQ,WAAW;AACnB;AAAA,IACF;AACA,kBAAc;AAAA,EAChB;AAGA,QAAM,iBAAiB,MAAM;AAAA,IAC3B,OAAO;AAAA,IACP,OAAO;AAAA,IACP;AAAA,IACA;AAAA,EACF;AAEA,QAAM,iBAAiB,eAAe;AAAA,IACpC,CAAC,MAAM,EAAE,eAAe,SAAS;AAAA,EACnC;AAEA,MAAI;AACJ,MAAI;AAEJ,MAAI,eAAe,SAAS,GAAG;AAE7B,QAAI;AACJ,QAAI,eAAe,WAAW,GAAG;AAC/B,mBAAa,eAAe,CAAC;AAAA,IAC/B,OAAO;AACL,YAAM,SAAS,MAAM;AAAA,QACnB;AAAA,QACA,eAAe,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,EAAE,EAAE;AAAA,MACzD;AACA,UAAI,CAAC,QAAQ;AACX,gBAAQ,WAAW;AACnB;AAAA,MACF;AACA,mBAAa;AAAA,IACf;AAEA,qBAAiB,WAAW;AAG5B,QAAI,WAAW,mBAAmB;AAChC,cAAQ,IAAI,8BAA8B;AAC1C,yBAAmB,MAAM,qBAAqB;AAAA,QAC5C,QAAQ,OAAO;AAAA,QACf,OAAO,OAAO;AAAA,QACd,YAAY,SAAS;AAAA,QACrB,cAAc,WAAW;AAAA,QACzB,QAAQ;AAAA,MACV,CAAC;AAAA,IACH;AAAA,EACF;AAGA,UAAQ,IAAI,uBAAuB,YAAY,GAAG,KAAK;AACvD,QAAM,SAAS,MAAM,cAAc;AAAA,IACjC,MAAM,SAAS,SAAS,IAAI;AAAA,IAC5B,KAAK,YAAY;AAAA,IACjB;AAAA,IACA;AAAA,EACF,CAAC;AAED,MAAI,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM;AAC9B,YAAQ,MAAM,4BAA4B,OAAO,SAAS,eAAe,EAAE;AAC3E,YAAQ,WAAW;AACnB;AAAA,EACF;AAEA,UAAQ,IAAI;AAAA,mBAAsB,OAAO,KAAK,EAAE,EAAE;AAClD,UAAQ,IAAI,UAAU,YAAY,GAAG,EAAE;AACvC,MAAI,eAAgB,SAAQ,IAAI,iBAAiB,cAAc,EAAE;AACjE,MAAI,iBAAkB,SAAQ,IAAI,uBAAuB;AACzD,UAAQ,IAAI;AAAA,8DAAiE;AAC/E;","names":[]}