@straion/cli 0.0.2 → 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 (139) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +0 -4
  3. package/dist/cli.d.ts +0 -4
  4. package/dist/cli.d.ts.map +1 -1
  5. package/dist/cli.js +3 -7
  6. package/dist/cli.js.map +1 -1
  7. package/dist/commands/default.d.ts +1 -2
  8. package/dist/commands/default.d.ts.map +1 -1
  9. package/dist/commands/default.js +7 -42
  10. package/dist/commands/default.js.map +1 -1
  11. package/dist/commands/find-requirements.d.ts.map +1 -1
  12. package/dist/commands/find-requirements.integration.test.js +17 -56
  13. package/dist/commands/find-requirements.integration.test.js.map +1 -1
  14. package/dist/commands/find-requirements.js +20 -32
  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.js +21 -142
  21. package/dist/commands/login.integration.test.js.map +1 -1
  22. package/dist/commands/login.js +10 -4
  23. package/dist/commands/login.js.map +1 -1
  24. package/dist/commands/logout.d.ts.map +1 -1
  25. package/dist/commands/logout.js +7 -22
  26. package/dist/commands/logout.js.map +1 -1
  27. package/dist/commands/session-start.d.ts.map +1 -1
  28. package/dist/commands/session-start.js +1 -8
  29. package/dist/commands/session-start.js.map +1 -1
  30. package/dist/commands/setup.d.ts +3 -0
  31. package/dist/commands/setup.d.ts.map +1 -0
  32. package/dist/commands/setup.js +23 -0
  33. package/dist/commands/setup.js.map +1 -0
  34. package/dist/components/banner.d.ts +3 -0
  35. package/dist/components/banner.d.ts.map +1 -0
  36. package/dist/components/banner.js +13 -0
  37. package/dist/components/banner.js.map +1 -0
  38. package/dist/components/default-flow.d.ts +11 -0
  39. package/dist/components/default-flow.d.ts.map +1 -0
  40. package/dist/components/default-flow.js +64 -0
  41. package/dist/components/default-flow.js.map +1 -0
  42. package/dist/components/hero.d.ts.map +1 -1
  43. package/dist/components/hero.js +22 -28
  44. package/dist/components/hero.js.map +1 -1
  45. package/dist/components/login/login-error.d.ts.map +1 -1
  46. package/dist/components/login/login-error.js +2 -4
  47. package/dist/components/login/login-error.js.map +1 -1
  48. package/dist/components/login/login-flow.d.ts +3 -3
  49. package/dist/components/login/login-flow.d.ts.map +1 -1
  50. package/dist/components/login/login-flow.js +19 -49
  51. package/dist/components/login/login-flow.js.map +1 -1
  52. package/dist/components/login/login-flow.test.js +8 -8
  53. package/dist/components/login/login-flow.test.js.map +1 -1
  54. package/dist/components/login/user-settings-link.d.ts +3 -0
  55. package/dist/components/login/user-settings-link.d.ts.map +1 -0
  56. package/dist/components/login/user-settings-link.js +8 -0
  57. package/dist/components/login/user-settings-link.js.map +1 -0
  58. package/dist/components/multi-select.d.ts +16 -0
  59. package/dist/components/multi-select.d.ts.map +1 -0
  60. package/dist/components/multi-select.js +105 -0
  61. package/dist/components/multi-select.js.map +1 -0
  62. package/dist/components/org-selector.d.ts.map +1 -1
  63. package/dist/components/org-selector.js +3 -1
  64. package/dist/components/org-selector.js.map +1 -1
  65. package/dist/components/pat-input.js +1 -1
  66. package/dist/components/pat-input.js.map +1 -1
  67. package/dist/components/setup/agent-setup.d.ts +9 -0
  68. package/dist/components/setup/agent-setup.d.ts.map +1 -0
  69. package/dist/components/setup/agent-setup.js +65 -0
  70. package/dist/components/setup/agent-setup.js.map +1 -0
  71. package/dist/components/setup/agents/agent-registry.d.ts +44 -0
  72. package/dist/components/setup/agents/agent-registry.d.ts.map +1 -0
  73. package/dist/components/setup/agents/agent-registry.js +64 -0
  74. package/dist/components/setup/agents/agent-registry.js.map +1 -0
  75. package/dist/components/setup/agents/command-helpers.d.ts +5 -0
  76. package/dist/components/setup/agents/command-helpers.d.ts.map +1 -0
  77. package/dist/components/setup/agents/command-helpers.js +28 -0
  78. package/dist/components/setup/agents/command-helpers.js.map +1 -0
  79. package/dist/components/setup/checking-agents.d.ts +16 -0
  80. package/dist/components/setup/checking-agents.d.ts.map +1 -0
  81. package/dist/components/setup/checking-agents.js +30 -0
  82. package/dist/components/setup/checking-agents.js.map +1 -0
  83. package/dist/components/setup/download-skills-and-plugins.d.ts +9 -0
  84. package/dist/components/setup/download-skills-and-plugins.d.ts.map +1 -0
  85. package/dist/components/setup/download-skills-and-plugins.js +29 -0
  86. package/dist/components/setup/download-skills-and-plugins.js.map +1 -0
  87. package/dist/components/setup/perform-setup.d.ts +23 -0
  88. package/dist/components/setup/perform-setup.d.ts.map +1 -0
  89. package/dist/components/setup/perform-setup.js +45 -0
  90. package/dist/components/setup/perform-setup.js.map +1 -0
  91. package/dist/components/spinner.d.ts +6 -2
  92. package/dist/components/spinner.d.ts.map +1 -1
  93. package/dist/components/spinner.js +12 -3
  94. package/dist/components/spinner.js.map +1 -1
  95. package/dist/hooks/use-credentials.d.ts +13 -0
  96. package/dist/hooks/use-credentials.d.ts.map +1 -0
  97. package/dist/hooks/use-credentials.js +33 -0
  98. package/dist/hooks/use-credentials.js.map +1 -0
  99. package/dist/lib/graphql.d.ts +57 -41
  100. package/dist/lib/graphql.d.ts.map +1 -1
  101. package/dist/lib/graphql.js +7 -0
  102. package/dist/lib/graphql.js.map +1 -1
  103. package/dist/lib/logger.d.ts +13 -8
  104. package/dist/lib/logger.d.ts.map +1 -1
  105. package/dist/lib/logger.js +6 -29
  106. package/dist/lib/logger.js.map +1 -1
  107. package/dist/lib/login.d.ts.map +1 -1
  108. package/dist/lib/middleware.d.ts +4 -8
  109. package/dist/lib/middleware.d.ts.map +1 -1
  110. package/dist/lib/middleware.js +5 -9
  111. package/dist/lib/middleware.js.map +1 -1
  112. package/dist/lib/skills-manager.d.ts +33 -0
  113. package/dist/lib/skills-manager.d.ts.map +1 -0
  114. package/dist/lib/skills-manager.js +233 -0
  115. package/dist/lib/skills-manager.js.map +1 -0
  116. package/dist/lib/skills-manager.test.d.ts +7 -0
  117. package/dist/lib/skills-manager.test.d.ts.map +1 -0
  118. package/dist/lib/skills-manager.test.js +248 -0
  119. package/dist/lib/skills-manager.test.js.map +1 -0
  120. package/dist/state/global-config.d.ts +23 -9
  121. package/dist/state/global-config.d.ts.map +1 -1
  122. package/dist/state/global-config.js +42 -36
  123. package/dist/state/global-config.js.map +1 -1
  124. package/dist/state/session-manager.js +2 -2
  125. package/dist/state/session-manager.js.map +1 -1
  126. package/dist/test/integration-helpers.d.ts +0 -5
  127. package/dist/test/integration-helpers.d.ts.map +1 -1
  128. package/dist/test/integration-helpers.js +0 -16
  129. package/dist/test/integration-helpers.js.map +1 -1
  130. package/package.json +15 -4
  131. package/dist/lib/output.d.ts +0 -16
  132. package/dist/lib/output.d.ts.map +0 -1
  133. package/dist/lib/output.js +0 -14
  134. package/dist/lib/output.js.map +0 -1
  135. package/dist/state/directory-config.d.ts +0 -21
  136. package/dist/state/directory-config.d.ts.map +0 -1
  137. package/dist/state/directory-config.js +0 -59
  138. package/dist/state/directory-config.js.map +0 -1
  139. /package/{LICENSE.txt → LICENSE} +0 -0
@@ -5,12 +5,12 @@ import { LoginFlow } from '../components/login/login-flow.js';
5
5
  import {} from '../lib/graphql.js';
6
6
  import { createInkPromise, renderInk } from '../lib/ink-render.js';
7
7
  import { withLogging } from '../lib/middleware.js';
8
- import { globalConfig } from '../state/global-config.js';
8
+ import { config, saveConfig } from '../state/global-config.js';
9
9
  export function createLoginCommand() {
10
10
  return new Command('login')
11
11
  .description('Authenticate with a Personal Access Token')
12
12
  .option('--token <token>', 'Personal Access Token')
13
- .action(withLogging(async (options, { logger, outputFormat }) => {
13
+ .action(withLogging(async (options, { logger }) => {
14
14
  try {
15
15
  // Token resolution: --token flag takes precedence over env var
16
16
  const token = options.token || process.env.STRAION_API_KEY;
@@ -20,9 +20,12 @@ export function createLoginCommand() {
20
20
  ? 'env'
21
21
  : 'input';
22
22
  const skipOrgSelection = !!token;
23
+ logger.info({ tokenSource }, 'Starting login process');
23
24
  const { promise, resolve, reject } = createInkPromise();
24
- await renderInk(React.createElement(LoginFlow, { defaultPat: token, tokenSource: tokenSource, skipOrgSelection: skipOrgSelection, outputFormat: outputFormat, onComplete: (user, org, pat) => resolve({ user, org, pat }), onError: (error) => reject(error) }));
25
+ logger.debug('Rendering TUI for login flow');
26
+ await renderInk(React.createElement(LoginFlow, { defaultPat: token, tokenSource: tokenSource, skipOrgSelection: skipOrgSelection, onComplete: (user, org, pat) => resolve({ user, org, pat }), onError: (error) => reject(error) }));
25
27
  const { user, org, pat } = await promise;
28
+ logger.info({ userId: user.id, orgId: org.id }, 'Login successful');
26
29
  // Store credentials in secure storage
27
30
  const credentialManager = await createCredentialManager();
28
31
  await credentialManager.setCredentials({
@@ -30,8 +33,11 @@ export function createLoginCommand() {
30
33
  name: user.firstName ?? user.name,
31
34
  accessToken: pat,
32
35
  });
36
+ logger.debug('Stored user credentials in credential manager');
33
37
  // Store global org
34
- globalConfig.setGlobalOrg(org);
38
+ config.globalOrg = org;
39
+ saveConfig();
40
+ logger.debug(`Set global organization to ${org.name} (${org.id})`);
35
41
  }
36
42
  catch (error) {
37
43
  logger.error({
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAE9D,OAAO,EAAwD,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;SACxB,WAAW,CAAC,2CAA2C,CAAC;SACxD,MAAM,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;SAClD,MAAM,CACL,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE;QACtD,IAAI,CAAC;YACH,+DAA+D;YAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;YAC3D,MAAM,WAAW,GAAgB,OAAO,CAAC,KAAK;gBAC5C,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe;oBAC3B,CAAC,CAAC,KAAK;oBACP,CAAC,CAAC,OAAO,CAAC;YACd,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC;YAEjC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,gBAAgB,EAIjD,CAAC;YAEL,MAAM,SAAS,CACb,oBAAC,SAAS,IACR,UAAU,EAAE,KAAK,EACjB,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAC3D,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GACjC,CACH,CAAC;YAEF,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,OAAO,CAAC;YAEzC,sCAAsC;YACtC,MAAM,iBAAiB,GAAG,MAAM,uBAAuB,EAAE,CAAC;YAC1D,MAAM,iBAAiB,CAAC,cAAc,CAAC;gBACrC,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,IAAI,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI;gBACjC,WAAW,EAAE,GAAG;aACjB,CAAC,CAAC;YACH,mBAAmB;YACnB,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CACV;gBACE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,EACD,oBAAoB,CACrB,CAAC;YACF,2DAA2D;YAC3D,YAAY,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CAAC,CACH,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,mBAAmB,IAAI,OAAO,CAuC7C"}
1
+ {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,mBAAmB,IAAI,OAAO,CA0B7C"}
@@ -4,36 +4,21 @@ import React from 'react';
4
4
  import { createCredentialManager } from '../auth/credentials.js';
5
5
  import { renderInk } from '../lib/ink-render.js';
6
6
  import { withLogging } from '../lib/middleware.js';
7
- import { outputJson } from '../lib/output.js';
8
- import { globalConfig } from '../state/global-config.js';
9
7
  export function createLogoutCommand() {
10
- return new Command('logout').description('Log out and clear stored credentials').action(withLogging(async (_, { logger, outputFormat }) => {
11
- const isJsonOutput = outputFormat === 'json';
8
+ return new Command('logout').description('Log out and clear stored credentials').action(withLogging(async (_, { logger }) => {
12
9
  try {
13
10
  // Clear credentials from keychain
14
11
  const credentialManager = await createCredentialManager();
15
12
  await credentialManager.deleteCredentials();
16
- // Clear global config
17
- globalConfig.clear();
18
- if (isJsonOutput) {
19
- outputJson({ success: true });
20
- }
21
- else {
22
- await renderInk(React.createElement(Box, { flexDirection: "column", borderStyle: "single", paddingLeft: 1 },
23
- React.createElement(Text, { color: "green" }, "\u2713 Logged out successfully.")));
24
- }
13
+ await renderInk(React.createElement(Box, { flexDirection: "column", borderStyle: "single", paddingLeft: 1 },
14
+ React.createElement(Text, { color: "green" }, "\u2713 Logged out successfully.")));
25
15
  }
26
16
  catch (error) {
27
17
  const errorMessage = error instanceof Error ? error.message : 'Unknown error';
28
- if (isJsonOutput) {
29
- outputJson({ success: false, error: errorMessage });
30
- }
31
- else {
32
- await renderInk(React.createElement(Box, { flexDirection: "column", borderStyle: "single", paddingLeft: 1 },
33
- React.createElement(Text, { color: "red" },
34
- "\u2717 Logout failed: ",
35
- errorMessage)));
36
- }
18
+ await renderInk(React.createElement(Box, { flexDirection: "column", borderStyle: "single", paddingLeft: 1 },
19
+ React.createElement(Text, { color: "red" },
20
+ "\u2717 Logout failed: ",
21
+ errorMessage)));
37
22
  logger.error({ error: errorMessage }, 'Logout command failed');
38
23
  process.exit(1);
39
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,sCAAsC,CAAC,CAAC,MAAM,CACrF,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE;QAChD,MAAM,YAAY,GAAG,YAAY,KAAK,MAAM,CAAC;QAE7C,IAAI,CAAC;YACH,kCAAkC;YAClC,MAAM,iBAAiB,GAAG,MAAM,uBAAuB,EAAE,CAAC;YAC1D,MAAM,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;YAE5C,sBAAsB;YACtB,YAAY,CAAC,KAAK,EAAE,CAAC;YAErB,IAAI,YAAY,EAAE,CAAC;gBACjB,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,MAAM,SAAS,CACb,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAE,CAAC;oBAC7D,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO,sCAAkC,CACjD,CACP,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAE9E,IAAI,YAAY,EAAE,CAAC;gBACjB,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,MAAM,SAAS,CACb,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAE,CAAC;oBAC7D,oBAAC,IAAI,IAAC,KAAK,EAAC,KAAK;;wBAAmB,YAAY,CAAQ,CACpD,CACP,CAAC;YACJ,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,uBAAuB,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,sCAAsC,CAAC,CAAC,MAAM,CACrF,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,kCAAkC;YAClC,MAAM,iBAAiB,GAAG,MAAM,uBAAuB,EAAE,CAAC;YAC1D,MAAM,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;YAE5C,MAAM,SAAS,CACb,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAE,CAAC;gBAC7D,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO,sCAAkC,CACjD,CACP,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAE9E,MAAM,SAAS,CACb,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAE,CAAC;gBAC7D,oBAAC,IAAI,IAAC,KAAK,EAAC,KAAK;;oBAAmB,YAAY,CAAQ,CACpD,CACP,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,uBAAuB,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"session-start.d.ts","sourceRoot":"","sources":["../../src/commands/session-start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,yBAAyB,IAAI,OAAO,CAiBnD"}
1
+ {"version":3,"file":"session-start.d.ts","sourceRoot":"","sources":["../../src/commands/session-start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,yBAAyB,IAAI,OAAO,CAWnD"}
@@ -1,19 +1,12 @@
1
1
  import { Command } from 'commander';
2
2
  import { withAuthAndLogging } from '../lib/middleware.js';
3
- import { outputJson } from '../lib/output.js';
4
3
  export function createSessionStartCommand() {
5
4
  return new Command('session-start')
6
5
  .description('Initialize a Straion session for the current directory')
7
6
  .requiredOption('--session <id>', 'Session ID from the calling agent')
8
- .action(withAuthAndLogging(async (options, { logger, organization, outputFormat }) => {
7
+ .action(withAuthAndLogging(async (_, { logger, organization }) => {
9
8
  logger.info('Session start initiated');
10
9
  logger.info({ orgId: organization.id }, 'Session started successfully');
11
- if (outputFormat === 'json') {
12
- outputJson({ success: true, organizationId: organization.id });
13
- }
14
- else {
15
- console.log(`${String.fromCodePoint(0x1f43f)} Straion session started...`);
16
- }
17
10
  }));
18
11
  }
19
12
  //# sourceMappingURL=session-start.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../src/commands/session-start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,UAAU,yBAAyB;IACvC,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC;SAChC,WAAW,CAAC,wDAAwD,CAAC;SACrE,cAAc,CAAC,gBAAgB,EAAE,mCAAmC,CAAC;SACrE,MAAM,CACL,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE,EAAE;QAC3E,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAEvC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,8BAA8B,CAAC,CAAC;QAExE,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;YAC5B,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC,CAAC,CACH,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../src/commands/session-start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,UAAU,yBAAyB;IACvC,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC;SAChC,WAAW,CAAC,wDAAwD,CAAC;SACrE,cAAc,CAAC,gBAAgB,EAAE,mCAAmC,CAAC;SACrE,MAAM,CACL,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE;QACvD,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAEvC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,8BAA8B,CAAC,CAAC;IAC1E,CAAC,CAAC,CACH,CAAC;AACN,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createSetupCommand(): Command;
3
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BpC,wBAAgB,kBAAkB,IAAI,OAAO,CAO5C"}
@@ -0,0 +1,23 @@
1
+ import { Command } from 'commander';
2
+ import { Box, useApp } from 'ink';
3
+ import React from 'react';
4
+ import { Banner } from '../components/banner.js';
5
+ import { AgentSetup } from '../components/setup/agent-setup.js';
6
+ import { renderInk } from '../lib/ink-render.js';
7
+ import { withLogging } from '../lib/middleware.js';
8
+ function SetupCommand({ logger }) {
9
+ const { exit } = useApp();
10
+ return (React.createElement(Box, { flexDirection: "column", paddingY: 1, paddingX: 2 },
11
+ React.createElement(Banner, null),
12
+ React.createElement(AgentSetup, { logger: logger, onComplete: () => {
13
+ logger.info('Setup completed.');
14
+ exit();
15
+ } })));
16
+ }
17
+ export function createSetupCommand() {
18
+ return new Command('setup').description('Set up your coding agents to use Straion').action(withLogging(async (options, { logger }) => {
19
+ logger.info('Setup started.');
20
+ await renderInk(React.createElement(SetupCommand, { logger: logger }));
21
+ }));
22
+ }
23
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAElC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,SAAS,YAAY,CAAC,EAAE,MAAM,EAAsB;IAClD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAE1B,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;QAClD,oBAAC,MAAM,OAAG;QACV,oBAAC,UAAU,IACT,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,GAAG,EAAE;gBACf,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAChC,IAAI,EAAE,CAAC;YACT,CAAC,GACD,CACE,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,0CAA0C,CAAC,CAAC,MAAM,CACxF,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACxC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9B,MAAM,SAAS,CAAC,oBAAC,YAAY,IAAC,MAAM,EAAE,MAAM,GAAI,CAAC,CAAC;IACpD,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const Banner: () => React.JSX.Element;
3
+ //# sourceMappingURL=banner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/components/banner.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,eAAO,MAAM,MAAM,yBAElB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { Text } from 'ink';
2
+ import React from 'react';
3
+ const straionAscii = `
4
+ ███████╗████████╗██████╗ █████╗ ██╗ ██████╗ ███╗ ██╗
5
+ ██╔════╝╚══██╔══╝██╔══██╗██╔══██╗██║██╔═══██╗████╗ ██║
6
+ ███████╗ ██║ ██████╔╝███████║██║██║ ██║██╔██╗ ██║
7
+ ╚════██║ ██║ ██╔══██╗██╔══██║██║██║ ██║██║╚██╗██║
8
+ ███████║ ██║ ██║ ██║██║ ██║██║╚██████╔╝██║ ╚████║
9
+ ╚══════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═════╝ ╚═╝ ╚═══╝`;
10
+ export const Banner = () => {
11
+ return React.createElement(Text, null, straionAscii);
12
+ };
13
+ //# sourceMappingURL=banner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/components/banner.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,YAAY,GAAG;;;;;;wDAMmC,CAAC;AAEzD,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,EAAE;IACzB,OAAO,oBAAC,IAAI,QAAE,YAAY,CAAQ,CAAC;AACrC,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { Logger } from 'pino';
2
+ import React from 'react';
3
+ import { type StoredCredentials } from '../auth/credentials.js';
4
+ interface DefaultFlowProps {
5
+ logger: Logger;
6
+ credentials: StoredCredentials | null;
7
+ defaultSetupDismissed: boolean;
8
+ }
9
+ export declare function DefaultFlow({ logger, credentials, defaultSetupDismissed }: DefaultFlowProps): React.JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=default-flow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-flow.d.ts","sourceRoot":"","sources":["../../src/components/default-flow.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAgC,MAAM,OAAO,CAAC;AAErD,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAWzF,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtC,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,qBAAqB,EAAE,EAAE,gBAAgB,qBA0F3F"}
@@ -0,0 +1,64 @@
1
+ import { Box, Text, useInput } from 'ink';
2
+ import React, { useCallback, useState } from 'react';
3
+ import { createCredentialManager } from '../auth/credentials.js';
4
+ import { Banner } from '../components/banner.js';
5
+ import { Hero } from '../components/hero.js';
6
+ import { LoginFlow } from '../components/login/login-flow.js';
7
+ import { useHasValidCredentials } from '../hooks/use-credentials.js';
8
+ import { config, saveConfig } from '../state/global-config.js';
9
+ import { AgentSetup } from './setup/agent-setup.js';
10
+ import { Spinner } from './spinner.js';
11
+ export function DefaultFlow({ logger, credentials, defaultSetupDismissed }) {
12
+ const { hasValidCredentials, organizations, isFinished: credentialsCheckFinished, } = useHasValidCredentials({
13
+ credentials,
14
+ logger,
15
+ });
16
+ const [loginPerformed, setLoginPerformed] = useState(false);
17
+ const [setupDismissed, setSetupDismissed] = useState(defaultSetupDismissed);
18
+ const [showSetupFinished, setShowSetupFinished] = useState(false);
19
+ const showLogin = credentialsCheckFinished && !hasValidCredentials;
20
+ const showAgentSetup = (credentialsCheckFinished && hasValidCredentials) || loginPerformed;
21
+ const handleLoginComplete = useCallback(async (user, org, pat) => {
22
+ // Store credentials
23
+ const credentialManager = await createCredentialManager();
24
+ await credentialManager.setCredentials({
25
+ userId: user.id,
26
+ name: user.firstName ?? user.name,
27
+ accessToken: pat,
28
+ });
29
+ logger.debug('Stored user credentials in credential manager');
30
+ // Store global org
31
+ config.globalOrg = org;
32
+ saveConfig();
33
+ setLoginPerformed(true);
34
+ }, [logger]);
35
+ const handleLoginError = useCallback((error) => {
36
+ logger.error({ error: error?.message ?? 'Unknown error' }, 'Login failed');
37
+ }, [logger]);
38
+ const handleSetupComplete = useCallback(() => {
39
+ config.setupDismissed = true;
40
+ saveConfig();
41
+ setShowSetupFinished(true);
42
+ }, []);
43
+ useInput((_, key) => {
44
+ if (key.escape) {
45
+ logger.info('Setup dismissed by user');
46
+ config.setupDismissed = true;
47
+ saveConfig();
48
+ setSetupDismissed(true);
49
+ }
50
+ });
51
+ return (React.createElement(Box, { flexDirection: "column", paddingY: 1, paddingX: 2, gap: 1 },
52
+ React.createElement(Banner, null),
53
+ setupDismissed ? (React.createElement(Hero, { localOrg: config.globalOrg, credentials: credentials, organizations: organizations })) : (React.createElement(React.Fragment, null,
54
+ React.createElement(Box, { width: 80, flexDirection: 'column', gap: 1, borderStyle: 'classic', padding: 1 },
55
+ React.createElement(Text, null, "This is a first time setup to help you get started with Straion."),
56
+ React.createElement(Text, { dimColor: true }, "You can press ESC to skip the setup.")),
57
+ !credentialsCheckFinished ? React.createElement(Spinner, null, "Checking credentials...") : null,
58
+ showLogin ? (React.createElement(LoginFlow, { tokenSource: "input", onComplete: handleLoginComplete, onError: handleLoginError })) : null,
59
+ showAgentSetup ? React.createElement(AgentSetup, { logger: logger, onComplete: handleSetupComplete }) : null,
60
+ showSetupFinished ? (React.createElement(Box, { flexDirection: "column", gap: 1 },
61
+ React.createElement(Text, { color: "green" }, "\u2713 Setup completed!"),
62
+ React.createElement(Text, { dimColor: true }, "You can press ESC to dismiss."))) : null))));
63
+ }
64
+ //# sourceMappingURL=default-flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-flow.js","sourceRoot":"","sources":["../../src/components/default-flow.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hero.d.ts","sourceRoot":"","sources":["../../src/components/hero.tsx"],"names":[],"mappings":"AACA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAGnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAwB9D,UAAU,SAAS;IACjB,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACtC,aAAa,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC;CAC9C;AAWD,wBAAgB,IAAI,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,SAAS,qBAyJvE"}
1
+ {"version":3,"file":"hero.d.ts","sourceRoot":"","sources":["../../src/components/hero.tsx"],"names":[],"mappings":"AACA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAInD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAiB9D,UAAU,SAAS;IACjB,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACtC,aAAa,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC;CAC9C;AAED,wBAAgB,IAAI,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,SAAS,qBA+JvE"}
@@ -1,29 +1,18 @@
1
1
  import { Box, Text, useApp, useInput } from 'ink';
2
2
  import React, { useEffect, useState } from 'react';
3
3
  import { create } from 'zustand';
4
- import { globalConfig } from '../state/global-config.js';
4
+ import packageJson from '../../package.json' with { type: 'json' };
5
+ import { config, saveConfig } from '../state/global-config.js';
5
6
  import { Button } from './button.js';
6
7
  import { Link } from './link.js';
7
8
  import { OrgSelector } from './org-selector.js';
8
- // Detect interactive mode - this never changes during execution
9
- function isInteractiveMode() {
10
- return process.stdout.isTTY === true;
11
- }
12
9
  const useHeroStore = create((set) => ({
13
10
  loginViewState: { type: 'idle' },
14
11
  setLoginViewState: (state) => set({ loginViewState: state }),
15
12
  }));
16
- const straionAscii = `
17
- ███████╗████████╗██████╗ █████╗ ██╗ ██████╗ ███╗ ██╗
18
- ██╔════╝╚══██╔══╝██╔══██╗██╔══██╗██║██╔═══██╗████╗ ██║
19
- ███████╗ ██║ ██████╔╝███████║██║██║ ██║██╔██╗ ██║
20
- ╚════██║ ██║ ██╔══██╗██╔══██║██║██║ ██║██║╚██╗██║
21
- ███████║ ██║ ██║ ██║██║ ██║██║╚██████╔╝██║ ╚████║
22
- ╚══════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═════╝ ╚═╝ ╚═══╝
23
- `;
24
13
  export function Hero({ credentials, localOrg, organizations }) {
25
14
  const { exit } = useApp();
26
- const isInteractive = isInteractiveMode();
15
+ const isInteractive = process.stdout.isTTY === true;
27
16
  const { loginViewState, setLoginViewState } = useHeroStore();
28
17
  const [currentOrg, setCurrentOrg] = useState(localOrg);
29
18
  const hasMultipleOrgs = organizations !== null && organizations.length > 1;
@@ -39,11 +28,10 @@ export function Hero({ credentials, localOrg, organizations }) {
39
28
  exit();
40
29
  }
41
30
  }, [isInteractive, exit]);
42
- return (React.createElement(Box, { flexDirection: "column", paddingY: 1, paddingX: 2 },
43
- React.createElement(Text, null, straionAscii),
31
+ return (React.createElement(Box, { flexDirection: "column", paddingY: 1 },
44
32
  React.createElement(Box, { marginBottom: 1 },
45
33
  React.createElement(Text, { bold: true, color: "blue" }, "The Missing Piece for AI-Era Software Engineering at Scale")),
46
- credentials && currentOrg ? (React.createElement(Box, { flexDirection: "column", borderStyle: "single", paddingLeft: 1, marginBottom: 1 },
34
+ credentials && currentOrg ? (React.createElement(Box, { flexDirection: "column", borderStyle: "classic", paddingLeft: 1, marginBottom: 1 },
47
35
  React.createElement(Text, null,
48
36
  "Hello ",
49
37
  React.createElement(Text, { bold: true }, credentials.name),
@@ -60,11 +48,12 @@ export function Hero({ credentials, localOrg, organizations }) {
60
48
  " Switch Organization")) : null,
61
49
  loginViewState.type === 'switch-org' && hasMultipleOrgs && currentOrg ? (React.createElement(OrgSelector, { organizations: loginViewState.orgs, defaultOrganization: currentOrg, onSelect: (org) => {
62
50
  setCurrentOrg(org);
63
- globalConfig.setGlobalOrg(org);
51
+ config.globalOrg = org;
52
+ saveConfig();
64
53
  setLoginViewState({ type: 'idle' });
65
- } })) : null)))) : (React.createElement(Box, { flexDirection: "column", borderStyle: "single", paddingLeft: 1, marginBottom: 1 },
54
+ } })) : null)))) : (React.createElement(Box, { flexDirection: "column", borderStyle: "classic", paddingLeft: 1, marginBottom: 1 },
66
55
  React.createElement(Text, { color: "yellow" }, "\u26A0 Not logged in"),
67
- React.createElement(Text, { dimColor: true },
56
+ React.createElement(Text, null,
68
57
  "Run ",
69
58
  React.createElement(Text, { color: "green" }, "straion login"),
70
59
  " to authenticate."))),
@@ -84,6 +73,11 @@ export function Hero({ credentials, localOrg, organizations }) {
84
73
  React.createElement(Text, null, " "),
85
74
  React.createElement(Text, { color: "green" }, "straion logout"),
86
75
  React.createElement(Text, { dimColor: true }, " ........... Logout from your account")),
76
+ React.createElement(Box, { marginBottom: 1 },
77
+ React.createElement(Text, { color: "cyan", bold: true }, "\u2192"),
78
+ React.createElement(Text, null, " "),
79
+ React.createElement(Text, { color: "green" }, "straion setup"),
80
+ React.createElement(Text, { dimColor: true }, " ............ Setup your coding agents")),
87
81
  React.createElement(Box, { marginBottom: 1 },
88
82
  React.createElement(Text, { color: "cyan", bold: true }, "\u2192"),
89
83
  React.createElement(Text, null, " "),
@@ -92,14 +86,14 @@ export function Hero({ credentials, localOrg, organizations }) {
92
86
  React.createElement(Box, { marginBottom: 1 },
93
87
  React.createElement(Text, { color: "gray" }, "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500")),
94
88
  React.createElement(Box, { flexDirection: "column" },
95
- React.createElement(Box, { marginBottom: 1 },
96
- React.createElement(Text, { dimColor: true },
97
- "Learn more:",
98
- ' ',
99
- React.createElement(Text, { color: "blue" },
100
- React.createElement(Link, { url: "https://straion.com" }, "https://straion.com")))),
89
+ React.createElement(Box, { marginBottom: 1, gap: 1 },
90
+ React.createElement(Text, null, "Learn more:"),
91
+ React.createElement(Link, { url: "https://straion.com", fallback: false },
92
+ React.createElement(Text, { color: "blue" }, "https://straion.com"))),
101
93
  React.createElement(Box, { justifyContent: "space-between", width: 71 },
102
- React.createElement(Text, { dimColor: true }, "Version 0.0.1"),
103
- isInteractive && React.createElement(Text, { dimColor: true }, "Press 'q' or ESC to exit")))));
94
+ React.createElement(Text, { dimColor: true },
95
+ "Version ",
96
+ packageJson.version),
97
+ isInteractive && React.createElement(Text, { dimColor: true }, "Press ESC to exit")))));
104
98
  }
105
99
  //# sourceMappingURL=hero.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hero.js","sourceRoot":"","sources":["../../src/components/hero.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hero.js","sourceRoot":"","sources":["../../src/components/hero.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"login-error.d.ts","sourceRoot":"","sources":["../../../src/components/login/login-error.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK9C,eAAO,MAAM,UAAU,GAAI,OAAO;IAAE,WAAW,EAAE,WAAW,CAAA;CAAE,sBAmB7D,CAAC"}
1
+ {"version":3,"file":"login-error.d.ts","sourceRoot":"","sources":["../../../src/components/login/login-error.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C,eAAO,MAAM,UAAU,GAAI,OAAO;IAAE,WAAW,EAAE,WAAW,CAAA;CAAE,sBAiB7D,CAAC"}
@@ -1,8 +1,6 @@
1
1
  import { Box, Text } from 'ink';
2
2
  import React from 'react';
3
- import { Link } from '../link.js';
4
- const STRAION_BASEURL = process.env.STRAION_BASEURL || 'https://straion.app';
5
- const PAT_URL = `${STRAION_BASEURL}/auth/login?redirectUrl=%2Fsettings%2Fuser-tokens`;
3
+ import { UserSettingsLink } from './user-settings-link.js';
6
4
  export const LoginError = (props) => {
7
5
  const { tokenSource } = props;
8
6
  return (React.createElement(Box, { flexDirection: "column", borderStyle: "single", paddingLeft: 1 },
@@ -11,6 +9,6 @@ export const LoginError = (props) => {
11
9
  React.createElement(Text, { dimColor: true }, "Try checking your Personal Access Token and internet connection, then try again."),
12
10
  React.createElement(Box, null,
13
11
  React.createElement(Text, { dimColor: true }, "You can find your Personal Access Token in your "),
14
- React.createElement(Link, { url: PAT_URL, fallback: (text, url) => `[${text}](${url})` }, "User Settings"))));
12
+ React.createElement(UserSettingsLink, null))));
15
13
  };
16
14
  //# sourceMappingURL=login-error.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"login-error.js","sourceRoot":"","sources":["../../../src/components/login/login-error.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAIlC,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,qBAAqB,CAAC;AAC7E,MAAM,OAAO,GAAG,GAAG,eAAe,mDAAmD,CAAC;AAEtF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAmC,EAAE,EAAE;IAChE,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAC9B,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAE,CAAC;QAC7D,oBAAC,IAAI,IAAC,KAAK,EAAC,KAAK,2BAAuB;QACvC,WAAW,KAAK,KAAK,IAAI,CACxB,oBAAC,IAAI,IAAC,QAAQ,qEAAgE,CAC/E;QACD,oBAAC,IAAI,IAAC,QAAQ,6FAEP;QACP,oBAAC,GAAG;YACF,oBAAC,IAAI,IAAC,QAAQ,6DAAwD;YACtE,oBAAC,IAAI,IAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,IAAI,KAAK,GAAG,GAAG,oBAEzD,CACH,CACF,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"login-error.js","sourceRoot":"","sources":["../../../src/components/login/login-error.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAmC,EAAE,EAAE;IAChE,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAC9B,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAE,CAAC;QAC7D,oBAAC,IAAI,IAAC,KAAK,EAAC,KAAK,2BAAuB;QACvC,WAAW,KAAK,KAAK,IAAI,CACxB,oBAAC,IAAI,IAAC,QAAQ,qEAAgE,CAC/E;QACD,oBAAC,IAAI,IAAC,QAAQ,6FAEP;QACP,oBAAC,GAAG;YACF,oBAAC,IAAI,IAAC,QAAQ,6DAAwD;YACtE,oBAAC,gBAAgB,OAAG,CAChB,CACF,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -1,15 +1,15 @@
1
1
  import React from 'react';
2
2
  import type { LoggedInUserFragment, OrganizationFragment } from '../../lib/graphql.js';
3
- import type { OutputFormat } from '../../lib/output.js';
4
3
  import type { TokenSource } from './types.js';
5
4
  interface LoginFlowProps {
6
5
  defaultPat?: string;
7
6
  tokenSource: TokenSource;
8
7
  skipOrgSelection?: boolean;
9
- outputFormat: OutputFormat;
8
+ /** If true, the component will not call exit() after completion. Parent controls app lifecycle. */
9
+ noExit?: boolean;
10
10
  onComplete: (user: LoggedInUserFragment, org: OrganizationFragment, pat: string) => void;
11
11
  onError: (error?: Error) => void;
12
12
  }
13
- export declare function LoginFlow({ defaultPat, tokenSource, skipOrgSelection, outputFormat, onComplete, onError, }: LoginFlowProps): React.JSX.Element | null;
13
+ export declare function LoginFlow({ defaultPat, tokenSource, skipOrgSelection, onComplete, onError, }: LoginFlowProps): React.JSX.Element | null;
14
14
  export {};
15
15
  //# sourceMappingURL=login-flow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"login-flow.d.ts","sourceRoot":"","sources":["../../../src/components/login/login-flow.tsx"],"names":[],"mappings":"AACA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAErD,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAc9C,UAAU,cAAc;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,CAAC,IAAI,EAAE,oBAAoB,EAAE,GAAG,EAAE,oBAAoB,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACzF,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,wBAAgB,SAAS,CAAC,EACxB,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,OAAO,GACR,EAAE,cAAc,4BAiLhB"}
1
+ {"version":3,"file":"login-flow.d.ts","sourceRoot":"","sources":["../../../src/components/login/login-flow.tsx"],"names":[],"mappings":"AACA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAErD,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAQvF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAe9C,UAAU,cAAc;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mGAAmG;IACnG,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,CAAC,IAAI,EAAE,oBAAoB,EAAE,GAAG,EAAE,oBAAoB,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACzF,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,wBAAgB,SAAS,CAAC,EACxB,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,OAAO,GACR,EAAE,cAAc,4BAqIhB"}