@straion/cli 0.0.1

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 (128) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/LICENSE.txt +93 -0
  3. package/README.md +83 -0
  4. package/dist/auth/config.d.ts +4 -0
  5. package/dist/auth/config.d.ts.map +1 -0
  6. package/dist/auth/config.js +4 -0
  7. package/dist/auth/config.js.map +1 -0
  8. package/dist/auth/cookie-jar.d.ts +24 -0
  9. package/dist/auth/cookie-jar.d.ts.map +1 -0
  10. package/dist/auth/cookie-jar.js +45 -0
  11. package/dist/auth/cookie-jar.js.map +1 -0
  12. package/dist/auth/credentials.d.ts +56 -0
  13. package/dist/auth/credentials.d.ts.map +1 -0
  14. package/dist/auth/credentials.js +147 -0
  15. package/dist/auth/credentials.js.map +1 -0
  16. package/dist/auth/graphql-client.d.ts +3 -0
  17. package/dist/auth/graphql-client.d.ts.map +1 -0
  18. package/dist/auth/graphql-client.js +18 -0
  19. package/dist/auth/graphql-client.js.map +1 -0
  20. package/dist/cli.d.ts +4 -0
  21. package/dist/cli.d.ts.map +1 -0
  22. package/dist/cli.js +24 -0
  23. package/dist/cli.js.map +1 -0
  24. package/dist/commands/default.d.ts +2 -0
  25. package/dist/commands/default.d.ts.map +1 -0
  26. package/dist/commands/default.js +42 -0
  27. package/dist/commands/default.js.map +1 -0
  28. package/dist/commands/find-requirements.d.ts +3 -0
  29. package/dist/commands/find-requirements.d.ts.map +1 -0
  30. package/dist/commands/find-requirements.js +35 -0
  31. package/dist/commands/find-requirements.js.map +1 -0
  32. package/dist/commands/index.d.ts +3 -0
  33. package/dist/commands/index.d.ts.map +1 -0
  34. package/dist/commands/index.js +11 -0
  35. package/dist/commands/index.js.map +1 -0
  36. package/dist/commands/login.d.ts +3 -0
  37. package/dist/commands/login.d.ts.map +1 -0
  38. package/dist/commands/login.js +36 -0
  39. package/dist/commands/login.js.map +1 -0
  40. package/dist/commands/logout.d.ts +3 -0
  41. package/dist/commands/logout.d.ts.map +1 -0
  42. package/dist/commands/logout.js +32 -0
  43. package/dist/commands/logout.js.map +1 -0
  44. package/dist/commands/session-start.d.ts +3 -0
  45. package/dist/commands/session-start.d.ts.map +1 -0
  46. package/dist/commands/session-start.js +13 -0
  47. package/dist/commands/session-start.js.map +1 -0
  48. package/dist/components/button.d.ts +7 -0
  49. package/dist/components/button.d.ts.map +1 -0
  50. package/dist/components/button.js +18 -0
  51. package/dist/components/button.js.map +1 -0
  52. package/dist/components/hero.d.ts +10 -0
  53. package/dist/components/hero.d.ts.map +1 -0
  54. package/dist/components/hero.js +39 -0
  55. package/dist/components/hero.js.map +1 -0
  56. package/dist/components/link.d.ts +43 -0
  57. package/dist/components/link.d.ts.map +1 -0
  58. package/dist/components/link.js +6 -0
  59. package/dist/components/link.js.map +1 -0
  60. package/dist/components/login/login-flow.d.ts +9 -0
  61. package/dist/components/login/login-flow.d.ts.map +1 -0
  62. package/dist/components/login/login-flow.js +98 -0
  63. package/dist/components/login/login-flow.js.map +1 -0
  64. package/dist/components/login/login-flow.test.d.ts +2 -0
  65. package/dist/components/login/login-flow.test.d.ts.map +1 -0
  66. package/dist/components/login/login-flow.test.js +139 -0
  67. package/dist/components/login/login-flow.test.js.map +1 -0
  68. package/dist/components/login/login.provider.d.ts +2 -0
  69. package/dist/components/login/login.provider.d.ts.map +1 -0
  70. package/dist/components/login/login.provider.js +2 -0
  71. package/dist/components/login/login.provider.js.map +1 -0
  72. package/dist/components/login/login.store.d.ts +2 -0
  73. package/dist/components/login/login.store.d.ts.map +1 -0
  74. package/dist/components/login/login.store.js +2 -0
  75. package/dist/components/login/login.store.js.map +1 -0
  76. package/dist/components/org-selector.d.ts +9 -0
  77. package/dist/components/org-selector.d.ts.map +1 -0
  78. package/dist/components/org-selector.js +33 -0
  79. package/dist/components/org-selector.js.map +1 -0
  80. package/dist/components/pat-input.d.ts +6 -0
  81. package/dist/components/pat-input.d.ts.map +1 -0
  82. package/dist/components/pat-input.js +42 -0
  83. package/dist/components/pat-input.js.map +1 -0
  84. package/dist/components/pat-input.test.d.ts +2 -0
  85. package/dist/components/pat-input.test.d.ts.map +1 -0
  86. package/dist/components/pat-input.test.js +82 -0
  87. package/dist/components/pat-input.test.js.map +1 -0
  88. package/dist/components/spinner.d.ts +2 -0
  89. package/dist/components/spinner.d.ts.map +1 -0
  90. package/dist/components/spinner.js +20 -0
  91. package/dist/components/spinner.js.map +1 -0
  92. package/dist/components/tabs.d.ts +35 -0
  93. package/dist/components/tabs.d.ts.map +1 -0
  94. package/dist/components/tabs.js +142 -0
  95. package/dist/components/tabs.js.map +1 -0
  96. package/dist/lib/graphql.d.ts +2081 -0
  97. package/dist/lib/graphql.d.ts.map +1 -0
  98. package/dist/lib/graphql.js +192 -0
  99. package/dist/lib/graphql.js.map +1 -0
  100. package/dist/lib/ink-render.d.ts +22 -0
  101. package/dist/lib/ink-render.d.ts.map +1 -0
  102. package/dist/lib/ink-render.js +33 -0
  103. package/dist/lib/ink-render.js.map +1 -0
  104. package/dist/lib/logger.d.ts +46 -0
  105. package/dist/lib/logger.d.ts.map +1 -0
  106. package/dist/lib/logger.js +88 -0
  107. package/dist/lib/logger.js.map +1 -0
  108. package/dist/lib/login.d.ts +28 -0
  109. package/dist/lib/login.d.ts.map +1 -0
  110. package/dist/lib/login.js +8 -0
  111. package/dist/lib/login.js.map +1 -0
  112. package/dist/lib/middleware.d.ts +35 -0
  113. package/dist/lib/middleware.d.ts.map +1 -0
  114. package/dist/lib/middleware.js +68 -0
  115. package/dist/lib/middleware.js.map +1 -0
  116. package/dist/state/directory-config.d.ts +21 -0
  117. package/dist/state/directory-config.d.ts.map +1 -0
  118. package/dist/state/directory-config.js +59 -0
  119. package/dist/state/directory-config.js.map +1 -0
  120. package/dist/state/global-config.d.ts +15 -0
  121. package/dist/state/global-config.d.ts.map +1 -0
  122. package/dist/state/global-config.js +59 -0
  123. package/dist/state/global-config.js.map +1 -0
  124. package/dist/state/session-manager.d.ts +33 -0
  125. package/dist/state/session-manager.d.ts.map +1 -0
  126. package/dist/state/session-manager.js +140 -0
  127. package/dist/state/session-manager.js.map +1 -0
  128. package/package.json +44 -0
@@ -0,0 +1,35 @@
1
+ import { Command } from 'commander';
2
+ import { getGraphqlClient } from '../auth/graphql-client.js';
3
+ import { GetMatchingRequirementsForTaskDocument, } from '../lib/graphql.js';
4
+ import { withAuthAndLogging } from '../lib/middleware.js';
5
+ export function createFindRequirementsCommand() {
6
+ return new Command('find-requirements')
7
+ .requiredOption('--session <id>', 'Session ID from the calling agent')
8
+ .option('--title <title>', 'Title of the task', '')
9
+ .option('--body <body>', 'Body/content of the task', '')
10
+ .option('--summary <summary>', 'Summary of the entire plan', '')
11
+ .description('Find requirements matching a given task description')
12
+ .action(withAuthAndLogging(async (options, { organization, accessToken, logger }) => {
13
+ try {
14
+ const client = getGraphqlClient(accessToken, organization.id);
15
+ const response = await client.request(GetMatchingRequirementsForTaskDocument, {
16
+ title: options.title,
17
+ body: options.body,
18
+ summary: options.summary,
19
+ });
20
+ const requirements = response.getMatchingRequirementsForTask;
21
+ console.log(JSON.stringify(requirements));
22
+ logger.info({ requirements, title: options.title, body: options.body, summary: options.summary }, 'Fetched matching requirements');
23
+ }
24
+ catch (error) {
25
+ if (error instanceof Error) {
26
+ console.error(JSON.stringify({ error: error.message }));
27
+ }
28
+ else {
29
+ console.error(JSON.stringify({ error: 'Unknown error' }));
30
+ }
31
+ process.exit(1);
32
+ }
33
+ }));
34
+ }
35
+ //# sourceMappingURL=find-requirements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-requirements.js","sourceRoot":"","sources":["../../src/commands/find-requirements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EACL,sCAAsC,GAGvC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,UAAU,6BAA6B;IAC3C,OAAO,IAAI,OAAO,CAAC,mBAAmB,CAAC;SACpC,cAAc,CAAC,gBAAgB,EAAE,mCAAmC,CAAC;SACrE,MAAM,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,EAAE,CAAC;SAClD,MAAM,CAAC,eAAe,EAAE,0BAA0B,EAAE,EAAE,CAAC;SACvD,MAAM,CAAC,qBAAqB,EAAE,4BAA4B,EAAE,EAAE,CAAC;SAC/D,WAAW,CAAC,qDAAqD,CAAC;SAClE,MAAM,CACL,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE;QAC1E,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,gBAAgB,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;YAE9D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAGnC,sCAAsC,EAAE;gBACxC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,QAAQ,CAAC,8BAA8B,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CACT,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,EACpF,+BAA+B,CAChC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;YAC5D,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CACH,CAAC;AACN,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerCommands(program: Command): void;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAKvD"}
@@ -0,0 +1,11 @@
1
+ import { createFindRequirementsCommand } from './find-requirements.js';
2
+ import { createLoginCommand } from './login.js';
3
+ import { createLogoutCommand } from './logout.js';
4
+ import { createSessionStartCommand } from './session-start.js';
5
+ export function registerCommands(program) {
6
+ program.addCommand(createSessionStartCommand());
7
+ program.addCommand(createLoginCommand());
8
+ program.addCommand(createLogoutCommand());
9
+ program.addCommand(createFindRequirementsCommand());
10
+ }
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,OAAO,CAAC,UAAU,CAAC,yBAAyB,EAAE,CAAC,CAAC;IAChD,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,UAAU,CAAC,6BAA6B,EAAE,CAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createLoginCommand(): Command;
3
+ //# sourceMappingURL=login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,kBAAkB,IAAI,OAAO,CA2C5C"}
@@ -0,0 +1,36 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Command } from 'commander';
3
+ import { createCredentialManager } from '../auth/credentials.js';
4
+ import { LoginFlow } from '../components/login/login-flow.js';
5
+ import {} from '../lib/graphql.js';
6
+ import { createInkPromise, renderInk } from '../lib/ink-render.js';
7
+ import { withLogging } from '../lib/middleware.js';
8
+ import { globalConfig } from '../state/global-config.js';
9
+ export function createLoginCommand() {
10
+ return new Command('login')
11
+ .description('Authenticate with a Personal Access Token')
12
+ .option('--token <token>', 'Personal Access Token')
13
+ .action(withLogging(async (options, { logger }) => {
14
+ try {
15
+ const { promise, resolve, reject } = createInkPromise();
16
+ await renderInk(_jsx(LoginFlow, { defaultPat: options.token, onComplete: (user, org, pat) => resolve({ user, org, pat }), onError: () => reject() }));
17
+ const { user, org, pat } = await promise;
18
+ // Store credentials in secure storage
19
+ const credentialManager = await createCredentialManager();
20
+ await credentialManager.setCredentials({
21
+ userId: user.id,
22
+ name: user.firstName ?? user.name,
23
+ accessToken: pat,
24
+ });
25
+ // Store global org
26
+ globalConfig.setGlobalOrg(org);
27
+ }
28
+ catch (error) {
29
+ logger.error({
30
+ error: error instanceof Error ? error.message : String(error),
31
+ }, 'Error during login');
32
+ process.exit(1);
33
+ }
34
+ }));
35
+ }
36
+ //# sourceMappingURL=login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,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,EAAE,EAAE;QACxC,IAAI,CAAC;YACH,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,gBAAgB,EAIjD,CAAC;YAEL,MAAM,SAAS,CACb,KAAC,SAAS,IACR,UAAU,EAAE,OAAO,CAAC,KAAK,EACzB,UAAU,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAC3D,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,GACvB,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,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CACH,CAAC;AACN,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createLogoutCommand(): Command;
3
+ //# sourceMappingURL=logout.d.ts.map
@@ -0,0 +1 @@
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,CAwC7C"}
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Command } from 'commander';
3
+ import { Box, Text } from 'ink';
4
+ import { createCredentialManager } from '../auth/credentials.js';
5
+ import { renderInk } from '../lib/ink-render.js';
6
+ import { withLogging } from '../lib/middleware.js';
7
+ import { globalConfig } from '../state/global-config.js';
8
+ export function createLogoutCommand() {
9
+ return new Command('logout').description('Log out and clear stored credentials').action(withLogging(async (_, { logger }) => {
10
+ try {
11
+ // Clear credentials from keychain
12
+ const credentialManager = await createCredentialManager();
13
+ await credentialManager.deleteCredentials();
14
+ // Clear global config
15
+ globalConfig.clear();
16
+ await renderInk(_jsx(Box, { flexDirection: "column", borderStyle: "single", paddingLeft: 1, children: _jsx(Text, { color: "green", children: "\u2713 Logged out successfully." }) }));
17
+ }
18
+ catch (error) {
19
+ if (error instanceof Error) {
20
+ await renderInk(_jsx(Box, { flexDirection: "column", borderStyle: "single", paddingLeft: 1, children: _jsxs(Text, { color: "red", children: ["\u2717 Logout failed: ", error.message] }) }));
21
+ }
22
+ else {
23
+ await renderInk(_jsx(Box, { flexDirection: "column", borderStyle: "single", paddingLeft: 1, children: _jsx(Text, { color: "red", children: "\u2717 Logout failed: Unknown error" }) }));
24
+ }
25
+ logger.error({
26
+ error: error instanceof Error ? error.message : 'Unknown error',
27
+ }, 'Logout command failed');
28
+ process.exit(1);
29
+ }
30
+ }));
31
+ }
32
+ //# sourceMappingURL=logout.js.map
@@ -0,0 +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;AAEhC,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,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,EAAE,EAAE;QAClC,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,MAAM,SAAS,CACb,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAE,CAAC,YAC7D,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,gDAAkC,GACjD,CACP,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,MAAM,SAAS,CACb,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAE,CAAC,YAC7D,MAAC,IAAI,IAAC,KAAK,EAAC,KAAK,uCAAmB,KAAK,CAAC,OAAO,IAAQ,GACrD,CACP,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,SAAS,CACb,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAE,CAAC,YAC7D,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,oDAAsC,GACnD,CACP,CAAC;YACJ,CAAC;YACD,MAAM,CAAC,KAAK,CACV;gBACE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAChE,EACD,uBAAuB,CACxB,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createSessionStartCommand(): Command;
3
+ //# sourceMappingURL=session-start.d.ts.map
@@ -0,0 +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;AAIpC,wBAAgB,yBAAyB,IAAI,OAAO,CAanD"}
@@ -0,0 +1,13 @@
1
+ import { Command } from 'commander';
2
+ import { withAuthAndLogging } from '../lib/middleware.js';
3
+ export function createSessionStartCommand() {
4
+ return new Command('session-start')
5
+ .description('Initialize a Straion session for the current directory')
6
+ .requiredOption('--session <id>', 'Session ID from the calling agent')
7
+ .action(withAuthAndLogging(async (options, { logger, organization }) => {
8
+ logger.info('Session start initiated');
9
+ logger.info({ orgId: organization.id }, 'Session started successfully');
10
+ console.log(`${String.fromCodePoint(0x1f43f)} Straion session started...`);
11
+ }));
12
+ }
13
+ //# sourceMappingURL=session-start.js.map
@@ -0,0 +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;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,OAAO,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE;QAC7D,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAEvC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,8BAA8B,CAAC,CAAC;QAExE,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC7E,CAAC,CAAC,CACH,CAAC;AACN,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type ReactNode } from 'react';
2
+ export type ButtonProps = {
3
+ children: ReactNode;
4
+ onPress: () => void;
5
+ };
6
+ export declare const Button: (props: ButtonProps) => import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../src/components/button.tsx"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEjD,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,MAAM,GAAI,OAAO,WAAW,4CAuBxC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text, useFocus, useInput } from 'ink';
3
+ import { useState } from 'react';
4
+ export const Button = (props) => {
5
+ const { isFocused } = useFocus();
6
+ const { children, onPress } = props;
7
+ const [isPressed, setIsPressed] = useState(false);
8
+ useInput((input, key) => {
9
+ if (isFocused && (key.return || input === ' ')) {
10
+ // Handle button press
11
+ setIsPressed(true);
12
+ setTimeout(() => setIsPressed(false), 100);
13
+ onPress();
14
+ }
15
+ });
16
+ return (_jsx(Box, { backgroundColor: isPressed ? 'magentaBright' : isFocused ? 'magenta' : 'white', flexDirection: 'row', paddingX: 1, children: _jsx(Text, { color: "black", children: children }) }));
17
+ };
18
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.js","sourceRoot":"","sources":["../../src/components/button.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAOjD,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAkB,EAAE,EAAE;IAC3C,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,EAAE,CAAC;IACjC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IACpC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElD,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,SAAS,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,KAAK,GAAG,CAAC,EAAE,CAAC;YAC/C,sBAAsB;YACtB,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;YAC3C,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,KAAC,GAAG,IACF,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAC9E,aAAa,EAAE,KAAK,EACpB,QAAQ,EAAE,CAAC,YAEX,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,QAAQ,GAAQ,GACjC,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { StoredCredentials } from '../auth/credentials.js';
2
+ import type { OrganizationFragment } from '../lib/graphql.js';
3
+ interface HeroProps {
4
+ credentials: StoredCredentials | null;
5
+ localOrg: OrganizationFragment | null;
6
+ organizations: OrganizationFragment[] | null;
7
+ }
8
+ export declare function Hero({ credentials, localOrg, organizations }: HeroProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=hero.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hero.d.ts","sourceRoot":"","sources":["../../src/components/hero.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAmB9D,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,2CA2IvE"}
@@ -0,0 +1,39 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text, useApp, useInput } from 'ink';
3
+ import { useState } from 'react';
4
+ import { create } from 'zustand';
5
+ import { globalConfig } from '../state/global-config.js';
6
+ import { Button } from './button.js';
7
+ import { Link } from './link.js';
8
+ import { OrgSelector } from './org-selector.js';
9
+ const useHeroStore = create((set) => ({
10
+ loginViewState: { type: 'idle' },
11
+ setLoginViewState: (state) => set({ loginViewState: state }),
12
+ }));
13
+ const straionAscii = `
14
+ ███████╗████████╗██████╗ █████╗ ██╗ ██████╗ ███╗ ██╗
15
+ ██╔════╝╚══██╔══╝██╔══██╗██╔══██╗██║██╔═══██╗████╗ ██║
16
+ ███████╗ ██║ ██████╔╝███████║██║██║ ██║██╔██╗ ██║
17
+ ╚════██║ ██║ ██╔══██╗██╔══██║██║██║ ██║██║╚██╗██║
18
+ ███████║ ██║ ██║ ██║██║ ██║██║╚██████╔╝██║ ╚████║
19
+ ╚══════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═════╝ ╚═╝ ╚═══╝
20
+ `;
21
+ export function Hero({ credentials, localOrg, organizations }) {
22
+ const { exit } = useApp();
23
+ const { loginViewState, setLoginViewState } = useHeroStore();
24
+ const [currentOrg, setCurrentOrg] = useState(localOrg);
25
+ const hasMultipleOrgs = organizations !== null && organizations.length > 1;
26
+ useInput((input, key) => {
27
+ if (input === 'q' || key.escape) {
28
+ exit();
29
+ }
30
+ });
31
+ return (_jsxs(Box, { flexDirection: "column", paddingY: 1, paddingX: 2, children: [_jsx(Text, { children: straionAscii }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, color: "blue", children: "The Missing Piece for AI-Era Software Engineering at Scale" }) }), credentials && currentOrg ? (_jsxs(Box, { flexDirection: "column", borderStyle: "single", paddingLeft: 1, marginBottom: 1, children: [_jsxs(Text, { children: ["Hello ", _jsx(Text, { bold: true, children: credentials.name }), "!"] }), _jsxs(Text, { children: ["Organization:", ' ', _jsx(Text, { bold: true, color: "magenta", children: currentOrg.name })] }), _jsxs(Box, { paddingTop: 1, children: [loginViewState.type === 'idle' && hasMultipleOrgs ? (_jsxs(Button, { onPress: () => {
32
+ setLoginViewState({ type: 'switch-org', orgs: organizations });
33
+ }, children: ['>', " Switch Organization"] })) : null, loginViewState.type === 'switch-org' && hasMultipleOrgs && currentOrg ? (_jsx(OrgSelector, { organizations: loginViewState.orgs, defaultOrganization: currentOrg, onSelect: (org) => {
34
+ setCurrentOrg(org);
35
+ globalConfig.setGlobalOrg(org);
36
+ setLoginViewState({ type: 'idle' });
37
+ } })) : null] })] })) : (_jsxs(Box, { flexDirection: "column", borderStyle: "single", paddingLeft: 1, marginBottom: 1, children: [_jsx(Text, { color: "yellow", children: "\u26A0 Not logged in" }), _jsxs(Text, { dimColor: true, children: ["Run ", _jsx(Text, { color: "green", children: "straion login" }), " to authenticate."] })] })), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "gray", children: "\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" }) }), _jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, color: "white", children: "Quick Start:" }) }), _jsxs(Box, { flexDirection: "column", marginLeft: 2, children: [_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { color: "cyan", bold: true, children: "\u2192" }), _jsx(Text, { children: " " }), _jsx(Text, { color: "green", children: "straion login" }), _jsx(Text, { dimColor: true, children: " ............ Login to your account" })] }), _jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { color: "cyan", bold: true, children: "\u2192" }), _jsx(Text, { children: " " }), _jsx(Text, { color: "green", children: "straion logout" }), _jsx(Text, { dimColor: true, children: " ........... Logout from your account" })] }), _jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { color: "cyan", bold: true, children: "\u2192" }), _jsx(Text, { children: " " }), _jsx(Text, { color: "green", children: "straion --help" }), _jsx(Text, { dimColor: true, children: " ........... Show all commands" })] })] })] }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "gray", children: "\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" }) }), _jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { dimColor: true, children: ["Learn more:", ' ', _jsx(Text, { color: "blue", children: _jsx(Link, { url: "https://straion.com", children: "https://straion.com" }) })] }) }), _jsxs(Box, { justifyContent: "space-between", width: 71, children: [_jsx(Text, { dimColor: true, children: "Version 0.0.1" }), _jsx(Text, { dimColor: true, children: "Press 'q' or ESC to exit" })] })] })] }));
38
+ }
39
+ //# sourceMappingURL=hero.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hero.js","sourceRoot":"","sources":["../../src/components/hero.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { type ReactNode } from 'react';
2
+ type LinkProps = {
3
+ readonly children: ReactNode;
4
+ /**
5
+ The URL to link to.
6
+
7
+ @example
8
+ ```
9
+ import React from 'react';
10
+ import Link from 'ink-link';
11
+
12
+ <Link url="https://sindresorhus.com">
13
+ My <Color cyan>Website</Color>
14
+ </Link>
15
+ ```
16
+ */
17
+ readonly url: string;
18
+ /**
19
+ Determines whether the URL should be printed after the text for unsupported terminals: `My website https://sindresorhus.com`.
20
+
21
+ Can be a boolean or a function that receives the text and URL and returns a custom fallback string.
22
+
23
+ @default true
24
+
25
+ @example
26
+ ```
27
+ import React from 'react';
28
+ import Link from 'ink-link';
29
+
30
+ <Link url="https://sindresorhus.com" fallback={false}>
31
+ My <Color cyan>Website</Color>
32
+ </Link>
33
+
34
+ <Link url="https://sindresorhus.com" fallback={(text, url) => `[${text}](${url})`}>
35
+ My <Color cyan>Website</Color>
36
+ </Link>
37
+ ```
38
+ */
39
+ readonly fallback?: boolean | ((text: string, url: string) => string);
40
+ };
41
+ export declare const Link: ({ children, url, fallback }: LinkProps) => import("react/jsx-runtime").JSX.Element;
42
+ export {};
43
+ //# sourceMappingURL=link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/components/link.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,KAAK,SAAS,GAAG;IACf,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAE7B;;;;;;;;;;;;QAYC;IACD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB;;;;;;;;;;;;;;;;;;;;QAoBC;IACD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;CACvE,CAAC;AAEF,eAAO,MAAM,IAAI,GAAI,6BAAoC,SAAS,4CAIjE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Text, Transform } from 'ink';
3
+ import {} from 'react';
4
+ import terminalLink from 'terminal-link';
5
+ export const Link = ({ children, url, fallback = true }) => (_jsx(Transform, { transform: (children) => terminalLink(children, url, { fallback }), children: _jsx(Text, { children: children }) }));
6
+ //# sourceMappingURL=link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/components/link.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,EAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,YAAY,MAAM,eAAe,CAAC;AA4CzC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI,EAAa,EAAE,EAAE,CAAC,CACrE,KAAC,SAAS,IAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,YAC3E,KAAC,IAAI,cAAE,QAAQ,GAAQ,GACb,CACb,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { LoggedInUserFragment, OrganizationFragment } from '../../lib/graphql.js';
2
+ interface LoginFlowProps {
3
+ defaultPat?: string;
4
+ onComplete: (user: LoggedInUserFragment, org: OrganizationFragment, pat: string) => void;
5
+ onError: () => void;
6
+ }
7
+ export declare function LoginFlow({ defaultPat, onComplete, onError }: LoginFlowProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=login-flow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login-flow.d.ts","sourceRoot":"","sources":["../../../src/components/login/login-flow.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AA8EvF,UAAU,cAAc;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,CAAC,IAAI,EAAE,oBAAoB,EAAE,GAAG,EAAE,oBAAoB,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACzF,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,SAAS,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,cAAc,2CAM5E"}
@@ -0,0 +1,98 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text, useApp } from 'ink';
3
+ import { createContext, useContext, useEffect, useState } from 'react';
4
+ import { createStore, useStore } from 'zustand';
5
+ import { loginUser } from '../../lib/login.js';
6
+ import { Link } from '../link.js';
7
+ import { OrgSelector } from '../org-selector.js';
8
+ import { PatInput } from '../pat-input.js';
9
+ import { Spinner } from '../spinner.js';
10
+ const STRAION_BASEURL = process.env.STRAION_BASEURL || 'https://straion.app';
11
+ const PAT_URL = `${STRAION_BASEURL}/auth/login?redirectUrl=%2Fsettings%2Fuser-tokens`;
12
+ const createLoginStore = (defaultProps) => {
13
+ const { onComplete, onError, defaultPat } = defaultProps;
14
+ return createStore((set) => {
15
+ const performLogin = async (pat) => {
16
+ try {
17
+ set({ loginState: 'pending' });
18
+ const resp = await loginUser(pat);
19
+ set({ loginState: 'success' });
20
+ if (resp.me.organizations.nodes.length === 1) {
21
+ set({ pat, user: resp.me, org: resp.me.organizations.nodes[0], step: 'done' });
22
+ }
23
+ else {
24
+ set({ pat, user: resp.me, step: 'org-select' });
25
+ }
26
+ }
27
+ catch {
28
+ set({ step: 'error', pat: null, loginState: 'error' });
29
+ }
30
+ };
31
+ return {
32
+ step: defaultPat ? 'authenticating' : 'pat-input',
33
+ onComplete,
34
+ onError,
35
+ performLogin,
36
+ loginState: 'idle',
37
+ setOrg: (org) => {
38
+ set({ org, step: 'done' });
39
+ },
40
+ user: null,
41
+ pat: defaultPat || null,
42
+ org: null,
43
+ };
44
+ });
45
+ };
46
+ const LoginContext = createContext(null);
47
+ function LoginProvider({ children, ...props }) {
48
+ const [store] = useState(() => createLoginStore(props));
49
+ return _jsx(LoginContext.Provider, { value: store, children: children });
50
+ }
51
+ function useLoginContext(selector) {
52
+ const store = useContext(LoginContext);
53
+ if (!store)
54
+ throw new Error('Missing LoginContext.Provider in the tree');
55
+ return useStore(store, selector);
56
+ }
57
+ export function LoginFlow({ defaultPat, onComplete, onError }) {
58
+ return (_jsx(LoginProvider, { defaultPat: defaultPat, onComplete: onComplete, onError: onError, children: _jsx(LoginInner, {}) }));
59
+ }
60
+ function LoginInner() {
61
+ const { exit } = useApp();
62
+ const state = useLoginContext((state) => ({
63
+ step: state.step,
64
+ org: state.org,
65
+ setOrg: state.setOrg,
66
+ performLogin: state.performLogin,
67
+ loginState: state.loginState,
68
+ user: state.user,
69
+ onComplete: state.onComplete,
70
+ onError: state.onError,
71
+ }));
72
+ const showLoginSpinner = useLoginContext((state) => (state.step === 'pat-input' || state.step === 'authenticating') &&
73
+ state.loginState === 'pending');
74
+ const showOrgSelector = useLoginContext((state) => state.step === 'org-select' && state.user !== null);
75
+ const showPatInput = useLoginContext((state) => state.step === 'pat-input' && state.loginState !== 'pending');
76
+ const pat = useLoginContext((state) => state.pat);
77
+ const { step, user, org, setOrg, performLogin, loginState, onComplete, onError } = state;
78
+ // Trigger onComplete after React has rendered the 'done' step
79
+ useEffect(() => {
80
+ if (step === 'done' && user && org && pat) {
81
+ onComplete(user, org, pat);
82
+ exit();
83
+ }
84
+ }, [step, user, org, pat, onComplete, exit]);
85
+ // Trigger onError after React has rendered the 'error' step
86
+ useEffect(() => {
87
+ if (step === 'error') {
88
+ onError();
89
+ exit();
90
+ }
91
+ }, [step, onError, exit]);
92
+ if (step === 'authenticating' && pat && loginState === 'idle') {
93
+ performLogin(pat);
94
+ return null;
95
+ }
96
+ return (_jsxs(Box, { flexDirection: "column", children: [showPatInput ? _jsx(PatInput, { onSubmit: performLogin }) : null, showLoginSpinner ? (_jsxs(Box, { flexDirection: "column", children: [_jsx(Spinner, {}), _jsx(Text, { children: "Logging in..." })] })) : null, showOrgSelector ? (_jsx(OrgSelector, { organizations: user.organizations.nodes, defaultOrganization: user.defaultOrganization, onSelect: setOrg })) : null, step === 'done' && user && (_jsxs(Box, { flexDirection: "column", borderStyle: "single", paddingLeft: 1, children: [_jsxs(Text, { children: ["Hello ", _jsx(Text, { bold: true, children: user.firstName }), "!"] }), _jsxs(Text, { children: ["The", ' ', _jsx(Text, { bold: true, color: "magenta", children: org?.name }), ' ', "organization will be used in new sessions."] }), _jsx(Text, { color: "green", children: "\u2713 You are logged in successfully." })] })), step === 'error' && (_jsxs(Box, { flexDirection: "column", borderStyle: "single", paddingLeft: 1, children: [_jsx(Text, { color: "red", children: "\u2717 Login failed." }), _jsx(Text, { dimColor: true, children: "Try checking your Personal Access Token and internet connection, then try again." }), _jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: "You can find your Personal Access Token in your " }), _jsx(Link, { url: PAT_URL, fallback: (text, url) => `[${text}](${url})`, children: "User Settings" })] })] }))] }));
97
+ }
98
+ //# sourceMappingURL=login-flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login-flow.js","sourceRoot":"","sources":["../../../src/components/login/login-flow.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=login-flow.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login-flow.test.d.ts","sourceRoot":"","sources":["../../../src/components/login/login-flow.test.tsx"],"names":[],"mappings":""}