@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.
- package/CHANGELOG.md +4 -0
- package/LICENSE.txt +93 -0
- package/README.md +83 -0
- package/dist/auth/config.d.ts +4 -0
- package/dist/auth/config.d.ts.map +1 -0
- package/dist/auth/config.js +4 -0
- package/dist/auth/config.js.map +1 -0
- package/dist/auth/cookie-jar.d.ts +24 -0
- package/dist/auth/cookie-jar.d.ts.map +1 -0
- package/dist/auth/cookie-jar.js +45 -0
- package/dist/auth/cookie-jar.js.map +1 -0
- package/dist/auth/credentials.d.ts +56 -0
- package/dist/auth/credentials.d.ts.map +1 -0
- package/dist/auth/credentials.js +147 -0
- package/dist/auth/credentials.js.map +1 -0
- package/dist/auth/graphql-client.d.ts +3 -0
- package/dist/auth/graphql-client.d.ts.map +1 -0
- package/dist/auth/graphql-client.js +18 -0
- package/dist/auth/graphql-client.js.map +1 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +24 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/default.d.ts +2 -0
- package/dist/commands/default.d.ts.map +1 -0
- package/dist/commands/default.js +42 -0
- package/dist/commands/default.js.map +1 -0
- package/dist/commands/find-requirements.d.ts +3 -0
- package/dist/commands/find-requirements.d.ts.map +1 -0
- package/dist/commands/find-requirements.js +35 -0
- package/dist/commands/find-requirements.js.map +1 -0
- package/dist/commands/index.d.ts +3 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +11 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/login.d.ts +3 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +36 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +3 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +32 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/session-start.d.ts +3 -0
- package/dist/commands/session-start.d.ts.map +1 -0
- package/dist/commands/session-start.js +13 -0
- package/dist/commands/session-start.js.map +1 -0
- package/dist/components/button.d.ts +7 -0
- package/dist/components/button.d.ts.map +1 -0
- package/dist/components/button.js +18 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/hero.d.ts +10 -0
- package/dist/components/hero.d.ts.map +1 -0
- package/dist/components/hero.js +39 -0
- package/dist/components/hero.js.map +1 -0
- package/dist/components/link.d.ts +43 -0
- package/dist/components/link.d.ts.map +1 -0
- package/dist/components/link.js +6 -0
- package/dist/components/link.js.map +1 -0
- package/dist/components/login/login-flow.d.ts +9 -0
- package/dist/components/login/login-flow.d.ts.map +1 -0
- package/dist/components/login/login-flow.js +98 -0
- package/dist/components/login/login-flow.js.map +1 -0
- package/dist/components/login/login-flow.test.d.ts +2 -0
- package/dist/components/login/login-flow.test.d.ts.map +1 -0
- package/dist/components/login/login-flow.test.js +139 -0
- package/dist/components/login/login-flow.test.js.map +1 -0
- package/dist/components/login/login.provider.d.ts +2 -0
- package/dist/components/login/login.provider.d.ts.map +1 -0
- package/dist/components/login/login.provider.js +2 -0
- package/dist/components/login/login.provider.js.map +1 -0
- package/dist/components/login/login.store.d.ts +2 -0
- package/dist/components/login/login.store.d.ts.map +1 -0
- package/dist/components/login/login.store.js +2 -0
- package/dist/components/login/login.store.js.map +1 -0
- package/dist/components/org-selector.d.ts +9 -0
- package/dist/components/org-selector.d.ts.map +1 -0
- package/dist/components/org-selector.js +33 -0
- package/dist/components/org-selector.js.map +1 -0
- package/dist/components/pat-input.d.ts +6 -0
- package/dist/components/pat-input.d.ts.map +1 -0
- package/dist/components/pat-input.js +42 -0
- package/dist/components/pat-input.js.map +1 -0
- package/dist/components/pat-input.test.d.ts +2 -0
- package/dist/components/pat-input.test.d.ts.map +1 -0
- package/dist/components/pat-input.test.js +82 -0
- package/dist/components/pat-input.test.js.map +1 -0
- package/dist/components/spinner.d.ts +2 -0
- package/dist/components/spinner.d.ts.map +1 -0
- package/dist/components/spinner.js +20 -0
- package/dist/components/spinner.js.map +1 -0
- package/dist/components/tabs.d.ts +35 -0
- package/dist/components/tabs.d.ts.map +1 -0
- package/dist/components/tabs.js +142 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/lib/graphql.d.ts +2081 -0
- package/dist/lib/graphql.d.ts.map +1 -0
- package/dist/lib/graphql.js +192 -0
- package/dist/lib/graphql.js.map +1 -0
- package/dist/lib/ink-render.d.ts +22 -0
- package/dist/lib/ink-render.d.ts.map +1 -0
- package/dist/lib/ink-render.js +33 -0
- package/dist/lib/ink-render.js.map +1 -0
- package/dist/lib/logger.d.ts +46 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +88 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/login.d.ts +28 -0
- package/dist/lib/login.d.ts.map +1 -0
- package/dist/lib/login.js +8 -0
- package/dist/lib/login.js.map +1 -0
- package/dist/lib/middleware.d.ts +35 -0
- package/dist/lib/middleware.d.ts.map +1 -0
- package/dist/lib/middleware.js +68 -0
- package/dist/lib/middleware.js.map +1 -0
- package/dist/state/directory-config.d.ts +21 -0
- package/dist/state/directory-config.d.ts.map +1 -0
- package/dist/state/directory-config.js +59 -0
- package/dist/state/directory-config.js.map +1 -0
- package/dist/state/global-config.d.ts +15 -0
- package/dist/state/global-config.d.ts.map +1 -0
- package/dist/state/global-config.js +59 -0
- package/dist/state/global-config.js.map +1 -0
- package/dist/state/session-manager.d.ts +33 -0
- package/dist/state/session-manager.d.ts.map +1 -0
- package/dist/state/session-manager.js +140 -0
- package/dist/state/session-manager.js.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"login-flow.test.d.ts","sourceRoot":"","sources":["../../../src/components/login/login-flow.test.tsx"],"names":[],"mappings":""}
|