@straion/cli 0.0.1 → 0.0.3

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 (174) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +0 -4
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +2 -4
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/default.d.ts.map +1 -1
  7. package/dist/commands/default.js +7 -30
  8. package/dist/commands/default.js.map +1 -1
  9. package/dist/commands/find-requirements.d.ts.map +1 -1
  10. package/dist/commands/find-requirements.integration.test.d.ts +5 -0
  11. package/dist/commands/find-requirements.integration.test.d.ts.map +1 -0
  12. package/dist/commands/find-requirements.integration.test.js +92 -0
  13. package/dist/commands/find-requirements.integration.test.js.map +1 -0
  14. package/dist/commands/find-requirements.js +26 -7
  15. package/dist/commands/find-requirements.js.map +1 -1
  16. package/dist/commands/index.d.ts.map +1 -1
  17. package/dist/commands/index.js +2 -0
  18. package/dist/commands/index.js.map +1 -1
  19. package/dist/commands/login.d.ts.map +1 -1
  20. package/dist/commands/login.integration.test.d.ts +13 -0
  21. package/dist/commands/login.integration.test.d.ts.map +1 -0
  22. package/dist/commands/login.integration.test.js +67 -0
  23. package/dist/commands/login.integration.test.js.map +1 -0
  24. package/dist/commands/login.js +20 -5
  25. package/dist/commands/login.js.map +1 -1
  26. package/dist/commands/logout.d.ts.map +1 -1
  27. package/dist/commands/logout.js +9 -14
  28. package/dist/commands/logout.js.map +1 -1
  29. package/dist/commands/session-start.d.ts.map +1 -1
  30. package/dist/commands/session-start.js +1 -2
  31. package/dist/commands/session-start.js.map +1 -1
  32. package/dist/commands/setup.d.ts +3 -0
  33. package/dist/commands/setup.d.ts.map +1 -0
  34. package/dist/commands/setup.js +23 -0
  35. package/dist/commands/setup.js.map +1 -0
  36. package/dist/components/banner.d.ts +3 -0
  37. package/dist/components/banner.d.ts.map +1 -0
  38. package/dist/components/banner.js +13 -0
  39. package/dist/components/banner.js.map +1 -0
  40. package/dist/components/button.d.ts +2 -2
  41. package/dist/components/button.d.ts.map +1 -1
  42. package/dist/components/button.js +3 -3
  43. package/dist/components/button.js.map +1 -1
  44. package/dist/components/default-flow.d.ts +11 -0
  45. package/dist/components/default-flow.d.ts.map +1 -0
  46. package/dist/components/default-flow.js +64 -0
  47. package/dist/components/default-flow.js.map +1 -0
  48. package/dist/components/hero.d.ts +2 -1
  49. package/dist/components/hero.d.ts.map +1 -1
  50. package/dist/components/hero.js +79 -19
  51. package/dist/components/hero.js.map +1 -1
  52. package/dist/components/link.d.ts +2 -2
  53. package/dist/components/link.d.ts.map +1 -1
  54. package/dist/components/link.js +3 -3
  55. package/dist/components/link.js.map +1 -1
  56. package/dist/components/login/login-error.d.ts +6 -0
  57. package/dist/components/login/login-error.d.ts.map +1 -0
  58. package/dist/components/login/login-error.js +14 -0
  59. package/dist/components/login/login-error.js.map +1 -0
  60. package/dist/components/login/login-flow.d.ts +8 -2
  61. package/dist/components/login/login-flow.d.ts.map +1 -1
  62. package/dist/components/login/login-flow.js +95 -84
  63. package/dist/components/login/login-flow.js.map +1 -1
  64. package/dist/components/login/login-flow.test.js +69 -7
  65. package/dist/components/login/login-flow.test.js.map +1 -1
  66. package/dist/components/login/types.d.ts +2 -0
  67. package/dist/components/login/types.d.ts.map +1 -0
  68. package/dist/components/login/types.js +2 -0
  69. package/dist/components/login/types.js.map +1 -0
  70. package/dist/components/login/user-settings-link.d.ts +3 -0
  71. package/dist/components/login/user-settings-link.d.ts.map +1 -0
  72. package/dist/components/login/user-settings-link.js +8 -0
  73. package/dist/components/login/user-settings-link.js.map +1 -0
  74. package/dist/components/multi-select.d.ts +16 -0
  75. package/dist/components/multi-select.d.ts.map +1 -0
  76. package/dist/components/multi-select.js +105 -0
  77. package/dist/components/multi-select.js.map +1 -0
  78. package/dist/components/org-selector.d.ts +2 -1
  79. package/dist/components/org-selector.d.ts.map +1 -1
  80. package/dist/components/org-selector.js +9 -2
  81. package/dist/components/org-selector.js.map +1 -1
  82. package/dist/components/pat-input.d.ts +2 -1
  83. package/dist/components/pat-input.d.ts.map +1 -1
  84. package/dist/components/pat-input.js +9 -3
  85. package/dist/components/pat-input.js.map +1 -1
  86. package/dist/components/pat-input.test.js +8 -8
  87. package/dist/components/pat-input.test.js.map +1 -1
  88. package/dist/components/setup/agent-setup.d.ts +9 -0
  89. package/dist/components/setup/agent-setup.d.ts.map +1 -0
  90. package/dist/components/setup/agent-setup.js +65 -0
  91. package/dist/components/setup/agent-setup.js.map +1 -0
  92. package/dist/components/setup/agents/agent-registry.d.ts +44 -0
  93. package/dist/components/setup/agents/agent-registry.d.ts.map +1 -0
  94. package/dist/components/setup/agents/agent-registry.js +64 -0
  95. package/dist/components/setup/agents/agent-registry.js.map +1 -0
  96. package/dist/components/setup/agents/command-helpers.d.ts +5 -0
  97. package/dist/components/setup/agents/command-helpers.d.ts.map +1 -0
  98. package/dist/components/setup/agents/command-helpers.js +28 -0
  99. package/dist/components/setup/agents/command-helpers.js.map +1 -0
  100. package/dist/components/setup/checking-agents.d.ts +16 -0
  101. package/dist/components/setup/checking-agents.d.ts.map +1 -0
  102. package/dist/components/setup/checking-agents.js +30 -0
  103. package/dist/components/setup/checking-agents.js.map +1 -0
  104. package/dist/components/setup/download-skills-and-plugins.d.ts +9 -0
  105. package/dist/components/setup/download-skills-and-plugins.d.ts.map +1 -0
  106. package/dist/components/setup/download-skills-and-plugins.js +29 -0
  107. package/dist/components/setup/download-skills-and-plugins.js.map +1 -0
  108. package/dist/components/setup/perform-setup.d.ts +23 -0
  109. package/dist/components/setup/perform-setup.d.ts.map +1 -0
  110. package/dist/components/setup/perform-setup.js +45 -0
  111. package/dist/components/setup/perform-setup.js.map +1 -0
  112. package/dist/components/spinner.d.ts +6 -1
  113. package/dist/components/spinner.d.ts.map +1 -1
  114. package/dist/components/spinner.js +13 -5
  115. package/dist/components/spinner.js.map +1 -1
  116. package/dist/components/tabs.d.ts +3 -3
  117. package/dist/components/tabs.d.ts.map +1 -1
  118. package/dist/components/tabs.js +26 -21
  119. package/dist/components/tabs.js.map +1 -1
  120. package/dist/hooks/use-credentials.d.ts +13 -0
  121. package/dist/hooks/use-credentials.d.ts.map +1 -0
  122. package/dist/hooks/use-credentials.js +33 -0
  123. package/dist/hooks/use-credentials.js.map +1 -0
  124. package/dist/lib/graphql.d.ts +57 -41
  125. package/dist/lib/graphql.d.ts.map +1 -1
  126. package/dist/lib/graphql.js +7 -0
  127. package/dist/lib/graphql.js.map +1 -1
  128. package/dist/lib/ink-render.d.ts +1 -1
  129. package/dist/lib/ink-render.js +1 -1
  130. package/dist/lib/logger.d.ts +13 -8
  131. package/dist/lib/logger.d.ts.map +1 -1
  132. package/dist/lib/logger.js +6 -29
  133. package/dist/lib/logger.js.map +1 -1
  134. package/dist/lib/login.d.ts.map +1 -1
  135. package/dist/lib/middleware.d.ts +2 -1
  136. package/dist/lib/middleware.d.ts.map +1 -1
  137. package/dist/lib/middleware.js +18 -6
  138. package/dist/lib/middleware.js.map +1 -1
  139. package/dist/lib/skills-manager.d.ts +33 -0
  140. package/dist/lib/skills-manager.d.ts.map +1 -0
  141. package/dist/lib/skills-manager.js +233 -0
  142. package/dist/lib/skills-manager.js.map +1 -0
  143. package/dist/lib/skills-manager.test.d.ts +7 -0
  144. package/dist/lib/skills-manager.test.d.ts.map +1 -0
  145. package/dist/lib/skills-manager.test.js +248 -0
  146. package/dist/lib/skills-manager.test.js.map +1 -0
  147. package/dist/state/global-config.d.ts +23 -9
  148. package/dist/state/global-config.d.ts.map +1 -1
  149. package/dist/state/global-config.js +42 -36
  150. package/dist/state/global-config.js.map +1 -1
  151. package/dist/state/session-manager.js +2 -2
  152. package/dist/state/session-manager.js.map +1 -1
  153. package/dist/test/integration-helpers.d.ts +96 -0
  154. package/dist/test/integration-helpers.d.ts.map +1 -0
  155. package/dist/test/integration-helpers.js +171 -0
  156. package/dist/test/integration-helpers.js.map +1 -0
  157. package/package.json +17 -4
  158. package/dist/auth/cookie-jar.d.ts +0 -24
  159. package/dist/auth/cookie-jar.d.ts.map +0 -1
  160. package/dist/auth/cookie-jar.js +0 -45
  161. package/dist/auth/cookie-jar.js.map +0 -1
  162. package/dist/components/login/login.provider.d.ts +0 -2
  163. package/dist/components/login/login.provider.d.ts.map +0 -1
  164. package/dist/components/login/login.provider.js +0 -2
  165. package/dist/components/login/login.provider.js.map +0 -1
  166. package/dist/components/login/login.store.d.ts +0 -2
  167. package/dist/components/login/login.store.d.ts.map +0 -1
  168. package/dist/components/login/login.store.js +0 -2
  169. package/dist/components/login/login.store.js.map +0 -1
  170. package/dist/state/directory-config.d.ts +0 -21
  171. package/dist/state/directory-config.d.ts.map +0 -1
  172. package/dist/state/directory-config.js +0 -59
  173. package/dist/state/directory-config.js.map +0 -1
  174. /package/{LICENSE.txt → LICENSE} +0 -0
@@ -1,15 +1,29 @@
1
1
  import type { OrganizationFragment } from '../lib/graphql.js';
2
- export interface GlobalConfigState {
2
+ export declare const globalDir: string;
3
+ export declare const globalConfigPath: string;
4
+ export interface DirectoryOverride {
5
+ org: OrganizationFragment;
6
+ updatedAt: string;
7
+ }
8
+ export interface DirectoryOverrides {
9
+ [directoryPath: string]: DirectoryOverride;
10
+ }
11
+ export interface GlobalConfig {
3
12
  globalOrg: OrganizationFragment | null;
13
+ setupDismissed: boolean;
14
+ directoryOverrides: DirectoryOverrides;
4
15
  version: number;
5
16
  }
6
- export declare function getGlobalDir(): string;
7
17
  export declare function ensureGlobalDir(): string;
8
- declare function load(): GlobalConfigState;
9
- export declare const globalConfig: {
10
- get: typeof load;
11
- setGlobalOrg(org: OrganizationFragment | null): void;
12
- clear(): void;
13
- };
14
- export {};
18
+ export declare const config: GlobalConfig;
19
+ export declare function saveConfig(): void;
20
+ export declare function removeDirectoryOrg(directory: string): void;
21
+ /**
22
+ * Resolves the org for a directory using the following order:
23
+ * 1. Directory override (from global config)
24
+ * 2. Global default org (from global config)
25
+ *
26
+ * Returns null if no org is configured.
27
+ */
28
+ export declare function resolveOrgForDirectory(directory: string): OrganizationFragment | null;
15
29
  //# sourceMappingURL=global-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"global-config.d.ts","sourceRoot":"","sources":["../../src/state/global-config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAM9D,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAMxC;AAaD,iBAAS,IAAI,IAAI,iBAAiB,CAiBjC;AAQD,eAAO,MAAM,YAAY;;sBAGL,oBAAoB,GAAG,IAAI,GAAG,IAAI;aAM3C,IAAI;CAGd,CAAC"}
1
+ {"version":3,"file":"global-config.d.ts","sourceRoot":"","sources":["../../src/state/global-config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAI9D,eAAO,MAAM,SAAS,QAA8B,CAAC;AACrD,eAAO,MAAM,gBAAgB,QAAiC,CAAC;AAE/D,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,oBAAoB,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,CAAC,aAAa,EAAE,MAAM,GAAG,iBAAiB,CAAC;CAC5C;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACvC,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,eAAe,IAAI,MAAM,CAKxC;AA6BD,eAAO,MAAM,MAAM,EAAE,YAA2B,CAAC;AAGjD,wBAAgB,UAAU,IAAI,IAAI,CAGjC;AAMD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAG1D;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAMrF"}
@@ -1,59 +1,65 @@
1
1
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
2
  import { homedir } from 'node:os';
3
3
  import { join } from 'node:path';
4
- const STRAION_DIR = '.straion';
5
- const CONFIG_FILE = 'config.json';
6
4
  const CURRENT_VERSION = 1;
7
- export function getGlobalDir() {
8
- return join(homedir(), STRAION_DIR);
9
- }
5
+ export const globalDir = join(homedir(), '.straion');
6
+ export const globalConfigPath = join(globalDir, 'config.json');
10
7
  export function ensureGlobalDir() {
11
- const dir = getGlobalDir();
12
- if (!existsSync(dir)) {
13
- mkdirSync(dir, { recursive: true, mode: 0o700 });
8
+ if (!existsSync(globalDir)) {
9
+ mkdirSync(globalDir, { recursive: true, mode: 0o700 });
14
10
  }
15
- return dir;
16
- }
17
- function getConfigPath() {
18
- return join(getGlobalDir(), CONFIG_FILE);
11
+ return globalDir;
19
12
  }
20
- function getDefaultState() {
13
+ function getDefaultConfig() {
21
14
  return {
22
15
  globalOrg: null,
16
+ setupDismissed: false,
17
+ directoryOverrides: {},
23
18
  version: CURRENT_VERSION,
24
19
  };
25
20
  }
26
- function load() {
27
- const configPath = getConfigPath();
28
- if (!existsSync(configPath)) {
29
- return getDefaultState();
21
+ function loadConfig() {
22
+ if (!existsSync(globalConfigPath)) {
23
+ return getDefaultConfig();
30
24
  }
31
25
  try {
32
- const content = readFileSync(configPath, 'utf8');
33
- const config = JSON.parse(content);
26
+ const content = readFileSync(globalConfigPath, 'utf8');
27
+ const stored = JSON.parse(content);
34
28
  return {
35
- ...getDefaultState(),
36
- ...config,
29
+ ...getDefaultConfig(),
30
+ ...stored,
37
31
  };
38
32
  }
39
33
  catch {
40
- return getDefaultState();
34
+ return getDefaultConfig();
41
35
  }
42
36
  }
43
- function save(state) {
37
+ // Load config once on module import
38
+ export const config = loadConfig();
39
+ // Explicit save - call after mutating config
40
+ export function saveConfig() {
44
41
  ensureGlobalDir();
45
- const configPath = getConfigPath();
46
- writeFileSync(configPath, JSON.stringify(state, null, 2), { mode: 0o600 });
42
+ writeFileSync(globalConfigPath, JSON.stringify(config, null, 2), { mode: 0o600 });
43
+ }
44
+ function getOrgForDirectory(directory) {
45
+ return config.directoryOverrides[directory]?.org ?? null;
46
+ }
47
+ export function removeDirectoryOrg(directory) {
48
+ delete config.directoryOverrides[directory];
49
+ saveConfig();
50
+ }
51
+ /**
52
+ * Resolves the org for a directory using the following order:
53
+ * 1. Directory override (from global config)
54
+ * 2. Global default org (from global config)
55
+ *
56
+ * Returns null if no org is configured.
57
+ */
58
+ export function resolveOrgForDirectory(directory) {
59
+ const directoryOrg = getOrgForDirectory(directory);
60
+ if (directoryOrg) {
61
+ return directoryOrg;
62
+ }
63
+ return config.globalOrg;
47
64
  }
48
- export const globalConfig = {
49
- get: load,
50
- setGlobalOrg(org) {
51
- const state = load();
52
- state.globalOrg = org;
53
- save(state);
54
- },
55
- clear() {
56
- save(getDefaultState());
57
- },
58
- };
59
65
  //# sourceMappingURL=global-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"global-config.js","sourceRoot":"","sources":["../../src/state/global-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,WAAW,GAAG,UAAU,CAAC;AAC/B,MAAM,WAAW,GAAG,aAAa,CAAC;AAClC,MAAM,eAAe,GAAG,CAAC,CAAC;AAO1B,MAAM,UAAU,YAAY;IAC1B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;IAC3B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,aAAa;IACpB,OAAO,IAAI,CAAC,YAAY,EAAE,EAAE,WAAW,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,eAAe;IACtB,OAAO;QACL,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,eAAe;KACzB,CAAC;AACJ,CAAC;AAED,SAAS,IAAI;IACX,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IAEnC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,eAAe,EAAE,CAAC;IAC3B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAsB,CAAC;QACxD,OAAO;YACL,GAAG,eAAe,EAAE;YACpB,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,eAAe,EAAE,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,SAAS,IAAI,CAAC,KAAwB;IACpC,eAAe,EAAE,CAAC;IAClB,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,GAAG,EAAE,IAAI;IAET,YAAY,CAAC,GAAgC;QAC3C,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC;QACrB,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,CAAC;IACd,CAAC;IAED,KAAK;QACH,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IAC1B,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"global-config.js","sourceRoot":"","sources":["../../src/state/global-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,eAAe,GAAG,CAAC,CAAC;AAE1B,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AACrD,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAkB/D,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO;QACL,SAAS,EAAE,IAAI;QACf,cAAc,EAAE,KAAK;QACrB,kBAAkB,EAAE,EAAE;QACtB,OAAO,EAAE,eAAe;KACzB,CAAC;AACJ,CAAC;AAED,SAAS,UAAU;IACjB,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClC,OAAO,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA0B,CAAC;QAC5D,OAAO;YACL,GAAG,gBAAgB,EAAE;YACrB,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,gBAAgB,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,oCAAoC;AACpC,MAAM,CAAC,MAAM,MAAM,GAAiB,UAAU,EAAE,CAAC;AAEjD,6CAA6C;AAC7C,MAAM,UAAU,UAAU;IACxB,eAAe,EAAE,CAAC;IAClB,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,kBAAkB,CAAC,SAAiB;IAC3C,OAAO,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,OAAO,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC5C,UAAU,EAAE,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAAiB;IACtD,MAAM,YAAY,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACnD,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,OAAO,MAAM,CAAC,SAAS,CAAC;AAC1B,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs';
2
2
  import { readdir } from 'node:fs/promises';
3
3
  import { join } from 'node:path';
4
- import { ensureGlobalDir, getGlobalDir } from './global-config.js';
4
+ import { ensureGlobalDir, globalDir } from './global-config.js';
5
5
  const SESSIONS_DIR = 'sessions';
6
6
  function getSessionsDir() {
7
- return join(getGlobalDir(), SESSIONS_DIR);
7
+ return join(globalDir, SESSIONS_DIR);
8
8
  }
9
9
  function ensureSessionsDir() {
10
10
  ensureGlobalDir();
@@ -1 +1 @@
1
- {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/state/session-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/state/session-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Shared helpers for CLI integration tests.
3
+ *
4
+ * These utilities help spawn the CLI as a child process and set up
5
+ * mock servers for testing in non-TTY environments.
6
+ */
7
+ import { type RequestHandler } from 'msw';
8
+ /**
9
+ * Result from running a CLI command.
10
+ */
11
+ export interface CLIResult {
12
+ stdout: string;
13
+ stderr: string;
14
+ exitCode: number | null;
15
+ }
16
+ /**
17
+ * Options for running CLI commands.
18
+ */
19
+ export interface RunCLIOptions {
20
+ env?: Record<string, string>;
21
+ timeout?: number;
22
+ }
23
+ /**
24
+ * Mock user data for authentication.
25
+ */
26
+ export declare const mockUser: {
27
+ id: string;
28
+ name: string;
29
+ firstName: string;
30
+ defaultOrganization: {
31
+ id: string;
32
+ name: string;
33
+ subdomain: string;
34
+ };
35
+ organizations: {
36
+ nodes: {
37
+ id: string;
38
+ name: string;
39
+ subdomain: string;
40
+ }[];
41
+ };
42
+ };
43
+ /**
44
+ * Mock organization data.
45
+ */
46
+ export declare const mockOrg: {
47
+ id: string;
48
+ name: string;
49
+ subdomain: string;
50
+ };
51
+ /**
52
+ * Creates the standard "Me" query handler for authentication.
53
+ */
54
+ export declare function createMeHandler(validToken?: string): import("msw").GraphQLHandler;
55
+ /**
56
+ * Test context that manages mock server and temp directories.
57
+ */
58
+ export declare class IntegrationTestContext {
59
+ private mockServer;
60
+ private tempConfigDir;
61
+ mockServerUrl: string;
62
+ /**
63
+ * Sets up the mock server with the given handlers.
64
+ */
65
+ setupServer(handlers: RequestHandler[]): Promise<void>;
66
+ /**
67
+ * Creates a minimal temp config directory (no credentials).
68
+ */
69
+ setupConfigDir(): string;
70
+ /**
71
+ * Writes org config to the config directory.
72
+ * Call after setupConfigDir() when tests need a pre-configured org.
73
+ */
74
+ writeOrgConfig(org?: {
75
+ id: string;
76
+ name: string;
77
+ subdomain: string;
78
+ }): void;
79
+ /**
80
+ * Gets the straion home path.
81
+ */
82
+ getStraionHome(): string;
83
+ /**
84
+ * Runs the CLI with the given arguments.
85
+ */
86
+ runCLI(args: string[], options?: RunCLIOptions): Promise<CLIResult>;
87
+ /**
88
+ * Cleans up temp directories only (call in afterEach).
89
+ */
90
+ cleanupConfigDir(): void;
91
+ /**
92
+ * Cleans up everything including the mock server (call in afterAll).
93
+ */
94
+ cleanup(): void;
95
+ }
96
+ //# sourceMappingURL=integration-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration-helpers.d.ts","sourceRoot":"","sources":["../../src/test/integration-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,OAAO,EAAyB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAejE;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;CAkBpB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO;;;;CAInB,CAAC;AAEF;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,SAAqB,gCAmB9D;AAED;;GAEG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,aAAa,CAAuB;IACrC,aAAa,SAAM;IAE1B;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5D;;OAEG;IACH,cAAc,IAAI,MAAM;IASxB;;;OAGG;IACH,cAAc,CAAC,GAAG;;;;KAAU,GAAG,IAAI;IAKnC;;OAEG;IACH,cAAc,IAAI,MAAM;IAOxB;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,SAAS,CAAC;IA+CvE;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAOxB;;OAEG;IACH,OAAO,IAAI,IAAI;CAKhB"}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Shared helpers for CLI integration tests.
3
+ *
4
+ * These utilities help spawn the CLI as a child process and set up
5
+ * mock servers for testing in non-TTY environments.
6
+ */
7
+ import { spawn } from 'node:child_process';
8
+ import fs from 'node:fs';
9
+ import os from 'node:os';
10
+ import path from 'node:path';
11
+ import { fileURLToPath } from 'node:url';
12
+ import { createServer } from '@mswjs/http-middleware';
13
+ import { graphql, HttpResponse } from 'msw';
14
+ // Get paths relative to this file
15
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
16
+ const CLI_PATH = path.resolve(__dirname, '../cli.ts');
17
+ const KEYTAR_LOADER_PATH = path.resolve(__dirname, 'keytar-loader.mts');
18
+ // TSX_PATH is set via env var in project.json
19
+ function getTsxPath() {
20
+ if (!process.env.TSX_PATH) {
21
+ throw new Error('TSX_PATH env var is required. Run tests via: pnpm nx test cli');
22
+ }
23
+ return path.resolve(process.cwd(), process.env.TSX_PATH);
24
+ }
25
+ /**
26
+ * Mock user data for authentication.
27
+ */
28
+ export const mockUser = {
29
+ id: 'user-123',
30
+ name: 'Test User',
31
+ firstName: 'Test',
32
+ defaultOrganization: {
33
+ id: 'org-456',
34
+ name: 'Test Organization',
35
+ subdomain: 'test-org',
36
+ },
37
+ organizations: {
38
+ nodes: [
39
+ {
40
+ id: 'org-456',
41
+ name: 'Test Organization',
42
+ subdomain: 'test-org',
43
+ },
44
+ ],
45
+ },
46
+ };
47
+ /**
48
+ * Mock organization data.
49
+ */
50
+ export const mockOrg = {
51
+ id: 'org-456',
52
+ name: 'Test Organization',
53
+ subdomain: 'test-org',
54
+ };
55
+ /**
56
+ * Creates the standard "Me" query handler for authentication.
57
+ */
58
+ export function createMeHandler(validToken = 'valid-test-token') {
59
+ return graphql.query('Me', ({ request }) => {
60
+ const authHeader = request.headers.get('Authorization');
61
+ if (authHeader === `Bearer ${validToken}`) {
62
+ return HttpResponse.json({
63
+ data: {
64
+ me: mockUser,
65
+ },
66
+ });
67
+ }
68
+ return HttpResponse.json({
69
+ errors: [{ message: 'Unauthorized' }],
70
+ }, { status: 401 });
71
+ });
72
+ }
73
+ /**
74
+ * Test context that manages mock server and temp directories.
75
+ */
76
+ export class IntegrationTestContext {
77
+ mockServer = null;
78
+ tempConfigDir = null;
79
+ mockServerUrl = '';
80
+ /**
81
+ * Sets up the mock server with the given handlers.
82
+ */
83
+ async setupServer(handlers) {
84
+ const app = createServer(...handlers);
85
+ this.mockServer = app.listen(0);
86
+ const address = this.mockServer.address();
87
+ this.mockServerUrl = `http://localhost:${address.port}`;
88
+ }
89
+ /**
90
+ * Creates a minimal temp config directory (no credentials).
91
+ */
92
+ setupConfigDir() {
93
+ this.tempConfigDir = fs.mkdtempSync(path.join(os.tmpdir(), 'straion-test-'));
94
+ const straionHomeDir = path.join(this.tempConfigDir, '.straion');
95
+ fs.mkdirSync(straionHomeDir, { recursive: true });
96
+ return this.tempConfigDir;
97
+ }
98
+ /**
99
+ * Writes org config to the config directory.
100
+ * Call after setupConfigDir() when tests need a pre-configured org.
101
+ */
102
+ writeOrgConfig(org = mockOrg) {
103
+ const configPath = path.join(this.getStraionHome(), 'config.json');
104
+ fs.writeFileSync(configPath, JSON.stringify({ version: 1, globalOrg: org }));
105
+ }
106
+ /**
107
+ * Gets the straion home path.
108
+ */
109
+ getStraionHome() {
110
+ if (!this.tempConfigDir) {
111
+ throw new Error('Config dir not set up. Call setupConfigDir() first.');
112
+ }
113
+ return path.join(this.tempConfigDir, '.straion');
114
+ }
115
+ /**
116
+ * Runs the CLI with the given arguments.
117
+ */
118
+ runCLI(args, options = {}) {
119
+ return new Promise((resolve, reject) => {
120
+ const { env = {}, timeout = 10000 } = options;
121
+ if (!this.tempConfigDir) {
122
+ throw new Error('Config dir not set up. Call setupConfigDir() first.');
123
+ }
124
+ const child = spawn(getTsxPath(), ['--import', KEYTAR_LOADER_PATH, CLI_PATH, ...args], {
125
+ env: {
126
+ ...process.env,
127
+ ...env,
128
+ // Override HOME so os.homedir() returns our temp dir
129
+ HOME: this.tempConfigDir,
130
+ STRAION_API_BASEURL: this.mockServerUrl,
131
+ FORCE_COLOR: '0',
132
+ NO_COLOR: '1',
133
+ },
134
+ stdio: ['pipe', 'pipe', 'pipe'],
135
+ timeout,
136
+ });
137
+ let stdout = '';
138
+ let stderr = '';
139
+ child.stdout?.on('data', (data) => {
140
+ stdout += data.toString();
141
+ });
142
+ child.stderr?.on('data', (data) => {
143
+ stderr += data.toString();
144
+ });
145
+ child.on('close', (code) => {
146
+ resolve({ stdout, stderr, exitCode: code });
147
+ });
148
+ child.on('error', (err) => {
149
+ reject(err);
150
+ });
151
+ });
152
+ }
153
+ /**
154
+ * Cleans up temp directories only (call in afterEach).
155
+ */
156
+ cleanupConfigDir() {
157
+ if (this.tempConfigDir) {
158
+ fs.rmSync(this.tempConfigDir, { recursive: true, force: true });
159
+ this.tempConfigDir = null;
160
+ }
161
+ }
162
+ /**
163
+ * Cleans up everything including the mock server (call in afterAll).
164
+ */
165
+ cleanup() {
166
+ this.mockServer?.close();
167
+ this.mockServer = null;
168
+ this.cleanupConfigDir();
169
+ }
170
+ }
171
+ //# sourceMappingURL=integration-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration-helpers.js","sourceRoot":"","sources":["../../src/test/integration-helpers.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,13 +1,24 @@
1
1
  {
2
2
  "name": "@straion/cli",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "author": "Straion",
5
5
  "bin": {
6
6
  "straion": "./dist/cli.js"
7
7
  },
8
+ "keywords": [
9
+ "cli",
10
+ "ai",
11
+ "ai-agents",
12
+ "developer-tools",
13
+ "claude",
14
+ "copilot",
15
+ "automation",
16
+ "requirements",
17
+ "enterprise"
18
+ ],
8
19
  "private": false,
9
20
  "type": "module",
10
- "license": "./LICENSE.txt",
21
+ "license": "Elastic-2.0",
11
22
  "dependencies": {
12
23
  "commander": "^12.1.0",
13
24
  "cookie": "^1.1.1",
@@ -19,14 +30,16 @@
19
30
  "pino": "^10.2.1",
20
31
  "react": "^19.0.0",
21
32
  "terminal-link": "^5.0.0",
22
- "zustand": "^4.5.5"
33
+ "zustand": "^5.0.10"
23
34
  },
24
35
  "devDependencies": {
36
+ "@mswjs/http-middleware": "^0.10.3",
25
37
  "@types/node": "^22",
26
38
  "@types/react": "^19.0.0",
27
39
  "eslint": "^9",
28
40
  "eslint-config-prettier": "^10",
29
41
  "ink-testing-library": "^4.0.0",
42
+ "msw": "2.7.0",
30
43
  "typescript": "^5.4.5",
31
44
  "vitest": "^3.0.7"
32
45
  },
@@ -35,7 +48,7 @@
35
48
  },
36
49
  "files": [
37
50
  "./dist",
38
- "./LICENSE.txt",
51
+ "./LICENSE",
39
52
  "./README.md",
40
53
  "./CHANGELOG.md"
41
54
  ],
@@ -1,24 +0,0 @@
1
- /**
2
- * Secure cookie storage for HTTP-only refresh token cookies
3
- * Stores the raw Set-Cookie header value in the system keychain
4
- */
5
- export declare const REFRESH_TOKEN_COOKIE = "___refresh_token";
6
- export declare class CookieJar {
7
- /**
8
- * Store the refresh token cookie (the full Set-Cookie header value)
9
- */
10
- setRefreshTokenCookie(setCookieHeader: string): Promise<void>;
11
- /**
12
- * Retrieve the stored refresh token cookie
13
- */
14
- getRefreshTokenCookie(): Promise<string | null>;
15
- /**
16
- * Clear the stored refresh token cookie
17
- */
18
- clearRefreshTokenCookie(): Promise<boolean>;
19
- }
20
- /**
21
- * Factory function to create the appropriate cookie jar
22
- */
23
- export declare function createCookieJar(): Promise<CookieJar>;
24
- //# sourceMappingURL=cookie-jar.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cookie-jar.d.ts","sourceRoot":"","sources":["../../src/auth/cookie-jar.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AAGvD,qBAAa,SAAS;IACpB;;OAEG;IACG,qBAAqB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInE;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIrD;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,OAAO,CAAC;CAGlD;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,SAAS,CAAC,CAW1D"}
@@ -1,45 +0,0 @@
1
- /**
2
- * Secure cookie storage for HTTP-only refresh token cookies
3
- * Stores the raw Set-Cookie header value in the system keychain
4
- */
5
- import * as keytar from 'keytar';
6
- import { StraionCLIConfig } from './config.js';
7
- /** TODO FFR: use shared config between gateway and cli */
8
- const AUTH_TOKEN_COOKIE = '___auth_token';
9
- export const REFRESH_TOKEN_COOKIE = '___refresh_token';
10
- const ORGANIZATION_COOKIE = '___organization_id';
11
- export class CookieJar {
12
- /**
13
- * Store the refresh token cookie (the full Set-Cookie header value)
14
- */
15
- async setRefreshTokenCookie(setCookieHeader) {
16
- await keytar.setPassword(StraionCLIConfig.serviceName, REFRESH_TOKEN_COOKIE, setCookieHeader);
17
- }
18
- /**
19
- * Retrieve the stored refresh token cookie
20
- */
21
- async getRefreshTokenCookie() {
22
- return keytar.getPassword(StraionCLIConfig.serviceName, REFRESH_TOKEN_COOKIE);
23
- }
24
- /**
25
- * Clear the stored refresh token cookie
26
- */
27
- async clearRefreshTokenCookie() {
28
- return keytar.deletePassword(StraionCLIConfig.serviceName, REFRESH_TOKEN_COOKIE);
29
- }
30
- }
31
- /**
32
- * Factory function to create the appropriate cookie jar
33
- */
34
- export async function createCookieJar() {
35
- try {
36
- // Test if keytar works
37
- await keytar.getPassword(StraionCLIConfig.serviceName, '__cookie_test__');
38
- return new CookieJar();
39
- }
40
- catch {
41
- console.error('System keychain unavailable. The straion cli requires a keychain to securely store authentication tokens.');
42
- throw new Error('System keychain unavailable');
43
- }
44
- }
45
- //# sourceMappingURL=cookie-jar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cookie-jar.js","sourceRoot":"","sources":["../../src/auth/cookie-jar.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,0DAA0D;AAC1D,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAC1C,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AACvD,MAAM,mBAAmB,GAAG,oBAAoB,CAAC;AAEjD,MAAM,OAAO,SAAS;IACpB;;OAEG;IACH,KAAK,CAAC,qBAAqB,CAAC,eAAuB;QACjD,MAAM,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,WAAW,EAAE,oBAAoB,EAAE,eAAe,CAAC,CAAC;IAChG,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB;QACzB,OAAO,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;IAChF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,uBAAuB;QAC3B,OAAO,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;IACnF,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC;QACH,uBAAuB;QACvB,MAAM,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;QAC1E,OAAO,IAAI,SAAS,EAAE,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CACX,2GAA2G,CAC5G,CAAC;QACF,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;AACH,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=login.provider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"login.provider.d.ts","sourceRoot":"","sources":["../../../src/components/login/login.provider.tsx"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=login.provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"login.provider.js","sourceRoot":"","sources":["../../../src/components/login/login.provider.tsx"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=login.store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"login.store.d.ts","sourceRoot":"","sources":["../../../src/components/login/login.store.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=login.store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"login.store.js","sourceRoot":"","sources":["../../../src/components/login/login.store.ts"],"names":[],"mappings":""}