@jitera/connect 1.5.0 → 2.1.0

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 (64) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.codex-plugin/plugin.json +1 -1
  3. package/README.md +51 -13
  4. package/content/instructions.md +7 -4
  5. package/content/session-start-unbound.md +12 -0
  6. package/content/session-start.md +14 -5
  7. package/dist/bin/cli.js +101 -93
  8. package/dist/bin/cli.js.map +1 -1
  9. package/dist/bin/connect.js +3 -0
  10. package/dist/bin/connect.js.map +1 -1
  11. package/dist/bin/init.js +122 -119
  12. package/dist/bin/init.js.map +1 -1
  13. package/dist/bin/login.js +221 -211
  14. package/dist/bin/login.js.map +1 -1
  15. package/dist/bin/proxy.js +2 -1
  16. package/dist/bin/proxy.js.map +1 -1
  17. package/dist/bin/set-agent.d.ts +3 -0
  18. package/dist/bin/set-agent.d.ts.map +1 -0
  19. package/dist/bin/set-agent.js +165 -0
  20. package/dist/bin/set-agent.js.map +1 -0
  21. package/dist/bin/statusline.js +6 -1
  22. package/dist/bin/statusline.js.map +1 -1
  23. package/dist/cli-session.d.ts +12 -0
  24. package/dist/cli-session.d.ts.map +1 -1
  25. package/dist/cli-session.js +25 -0
  26. package/dist/cli-session.js.map +1 -1
  27. package/dist/exit.d.ts +8 -0
  28. package/dist/exit.d.ts.map +1 -0
  29. package/dist/exit.js +32 -0
  30. package/dist/exit.js.map +1 -0
  31. package/dist/graphql.d.ts +6 -0
  32. package/dist/graphql.d.ts.map +1 -1
  33. package/dist/graphql.js +24 -0
  34. package/dist/graphql.js.map +1 -1
  35. package/dist/hook-io.d.ts +2 -0
  36. package/dist/hook-io.d.ts.map +1 -1
  37. package/dist/hook-io.js +3 -0
  38. package/dist/hook-io.js.map +1 -1
  39. package/dist/hooks/session-start.js +19 -5
  40. package/dist/hooks/session-start.js.map +1 -1
  41. package/dist/hooks/stop.js +7 -1
  42. package/dist/hooks/stop.js.map +1 -1
  43. package/dist/hooks/user-prompt-submit.js +78 -20
  44. package/dist/hooks/user-prompt-submit.js.map +1 -1
  45. package/dist/project-marker.d.ts +1 -0
  46. package/dist/project-marker.d.ts.map +1 -1
  47. package/dist/project-marker.js +40 -2
  48. package/dist/project-marker.js.map +1 -1
  49. package/dist/proxy.d.ts +5 -1
  50. package/dist/proxy.d.ts.map +1 -1
  51. package/dist/proxy.js +42 -2
  52. package/dist/proxy.js.map +1 -1
  53. package/dist/select.d.ts +17 -0
  54. package/dist/select.d.ts.map +1 -1
  55. package/dist/select.js +164 -3
  56. package/dist/select.js.map +1 -1
  57. package/dist/statusline.d.ts +2 -1
  58. package/dist/statusline.d.ts.map +1 -1
  59. package/dist/statusline.js +6 -1
  60. package/dist/statusline.js.map +1 -1
  61. package/package.json +1 -1
  62. package/skills/jitera-context/SKILL.md +22 -0
  63. package/skills/jitera-memory/SKILL.md +20 -2
  64. package/templates/AGENTS.md.tmpl +10 -4
package/dist/bin/init.js CHANGED
@@ -12,6 +12,7 @@ import { resolveGitRoot } from "../install/project-root.js";
12
12
  import { writeProjectMarker } from "../project-marker.js";
13
13
  import { InvalidChoiceError, SelectCancelledError, chooseFrom } from "../select.js";
14
14
  import { createTheme } from "../theme.js";
15
+ import { endWith, runCommand } from "../exit.js";
15
16
  const PACKAGE_ROOT = join(dirname(fileURLToPath(import.meta.url)), "..", "..");
16
17
  const USAGE = [
17
18
  "usage: npx @jitera/connect init [--env=<environment>] [--project=<uuid>] [--dry-run]",
@@ -41,134 +42,136 @@ function parseArgs(argv) {
41
42
  return args;
42
43
  }
43
44
  const theme = createTheme({ env: process.env, isTty: Boolean(process.stdout.isTTY) });
44
- const args = parseArgs(process.argv.slice(2));
45
- if (args.help) {
46
- process.stdout.write(`${USAGE}\n`);
47
- process.exit(0);
48
- }
49
- if (args.unknown) {
50
- process.stderr.write(`error: unrecognised argument "${args.unknown}"\n${USAGE}\n`);
51
- process.exit(2);
52
- }
53
- const projectRoot = resolveGitRoot(process.cwd());
54
- if (!projectRoot) {
55
- process.stderr.write("error: not inside a git repository. Instructions written outside a repository " +
56
- "are invisible to assistants that read AGENTS.md from the repository root, and " +
57
- "an out-of-repo CLAUDE.md leaks into every project below it. Run this from " +
58
- "inside the repository you want to connect.\n");
59
- process.exit(2);
60
- }
61
- let brand = DEFAULT_BRAND;
62
- try {
63
- const deployment = await discoverDeployment({
64
- environment: args.environment,
65
- studioUrl: process.env["JITERA_STUDIO_URL"],
66
- });
67
- brand = deployment.brand;
68
- }
69
- catch (error) {
70
- if (error instanceof UnknownEnvironmentError) {
71
- process.stderr.write(`error: ${error.message}\n`);
72
- process.exit(2);
45
+ await runCommand(async () => {
46
+ const args = parseArgs(process.argv.slice(2));
47
+ if (args.help) {
48
+ process.stdout.write(`${USAGE}\n`);
49
+ endWith(0);
73
50
  }
74
- if (!(error instanceof DiscoveryError))
75
- throw error;
76
- process.stdout.write(` ${theme.dim(`offline, using the default brand "${brand}"`)}\n`);
77
- }
78
- // A stored login session ("login once") lets init pick the project here, so
79
- // the binding lands in .jitera.json without another browser round-trip.
80
- const session = loadCliSession();
81
- let projectUuid = args.project;
82
- let projectName;
83
- if (!projectUuid && session) {
84
- let accessToken = session.accessToken;
51
+ if (args.unknown) {
52
+ process.stderr.write(`error: unrecognised argument "${args.unknown}"\n${USAGE}\n`);
53
+ endWith(2);
54
+ }
55
+ const projectRoot = resolveGitRoot(process.cwd());
56
+ if (!projectRoot) {
57
+ process.stderr.write("error: not inside a git repository. Instructions written outside a repository " +
58
+ "are invisible to assistants that read AGENTS.md from the repository root, and " +
59
+ "an out-of-repo CLAUDE.md leaks into every project below it. Run this from " +
60
+ "inside the repository you want to connect.\n");
61
+ endWith(2);
62
+ }
63
+ let brand = DEFAULT_BRAND;
85
64
  try {
86
- if (isExpired(session)) {
87
- if (!session.refreshToken) {
88
- throw new DeviceFlowError("expired_token", "the stored sign-in expired. Run login again.");
89
- }
90
- const refreshed = await refreshAccessToken({
91
- automationUrl: session.automationUrl,
92
- refreshToken: session.refreshToken,
93
- });
94
- accessToken = refreshed.accessToken;
95
- saveCliSession({
96
- ...session,
97
- accessToken,
98
- refreshToken: refreshed.refreshToken ?? session.refreshToken,
99
- expiresAt: refreshed.expiresInSeconds
100
- ? Date.now() + refreshed.expiresInSeconds * 1000
101
- : undefined,
102
- });
103
- }
104
- const transport = { automationUrl: session.automationUrl, accessToken };
105
- const organisations = await listOrganisations(transport);
106
- const organisation = organisations.length > 1
107
- ? await chooseFrom({
108
- items: organisations,
109
- prompt: "Which organisation?",
110
- label: (org) => `${org.name ?? org.slug}${org.personal ? " (personal)" : ""}`,
111
- theme,
112
- })
113
- : organisations[0];
114
- const projects = await listProjects(transport, organisation);
115
- if (projects.length === 0) {
116
- process.stdout.write(` ${theme.dim("this account has no projects here; pass --project=<uuid> to bind one")}\n`);
65
+ const deployment = await discoverDeployment({
66
+ environment: args.environment,
67
+ studioUrl: process.env["JITERA_STUDIO_URL"],
68
+ });
69
+ brand = deployment.brand;
70
+ }
71
+ catch (error) {
72
+ if (error instanceof UnknownEnvironmentError) {
73
+ process.stderr.write(`error: ${error.message}\n`);
74
+ endWith(2);
117
75
  }
118
- else {
119
- const choice = projects.length > 1
76
+ if (!(error instanceof DiscoveryError))
77
+ throw error;
78
+ process.stdout.write(` ${theme.dim(`offline, using the default brand "${brand}"`)}\n`);
79
+ }
80
+ // A stored login session ("login once") lets init pick the project here, so
81
+ // the binding lands in .jitera.json without another browser round-trip.
82
+ const session = loadCliSession();
83
+ let projectUuid = args.project;
84
+ let projectName;
85
+ if (!projectUuid && session) {
86
+ let accessToken = session.accessToken;
87
+ try {
88
+ if (isExpired(session)) {
89
+ if (!session.refreshToken) {
90
+ throw new DeviceFlowError("expired_token", "the stored sign-in expired. Run login again.");
91
+ }
92
+ const refreshed = await refreshAccessToken({
93
+ automationUrl: session.automationUrl,
94
+ refreshToken: session.refreshToken,
95
+ });
96
+ accessToken = refreshed.accessToken;
97
+ saveCliSession({
98
+ ...session,
99
+ accessToken,
100
+ refreshToken: refreshed.refreshToken ?? session.refreshToken,
101
+ expiresAt: refreshed.expiresInSeconds
102
+ ? Date.now() + refreshed.expiresInSeconds * 1000
103
+ : undefined,
104
+ });
105
+ }
106
+ const transport = { automationUrl: session.automationUrl, accessToken };
107
+ const organisations = await listOrganisations(transport);
108
+ const organisation = organisations.length > 1
120
109
  ? await chooseFrom({
121
- items: projects,
122
- prompt: "Which project does this repository belong to?",
123
- label: (project) => project.name,
110
+ items: organisations,
111
+ prompt: "Which organisation?",
112
+ label: (org) => `${org.name ?? org.slug}${org.personal ? " (personal)" : ""}`,
124
113
  theme,
125
114
  })
126
- : projects[0];
127
- projectUuid = choice?.uuid;
128
- projectName = choice?.name;
129
- if (projectName) {
130
- process.stdout.write(` ${theme.dim("Project")} ${projectName}\n`);
115
+ : organisations[0];
116
+ const projects = await listProjects(transport, organisation);
117
+ if (projects.length === 0) {
118
+ process.stdout.write(` ${theme.dim("this account has no projects here; pass --project=<uuid> to bind one")}\n`);
119
+ }
120
+ else {
121
+ const choice = projects.length > 1
122
+ ? await chooseFrom({
123
+ items: projects,
124
+ prompt: "Which project does this repository belong to?",
125
+ label: (project) => project.name,
126
+ theme,
127
+ })
128
+ : projects[0];
129
+ projectUuid = choice?.uuid;
130
+ projectName = choice?.name;
131
+ if (projectName) {
132
+ process.stdout.write(` ${theme.dim("Project")} ${projectName}\n`);
133
+ }
131
134
  }
132
135
  }
133
- }
134
- catch (error) {
135
- if (error instanceof SelectCancelledError) {
136
- process.stderr.write(`\n error: cancelled.\n`);
137
- process.exit(130);
138
- }
139
- if (error instanceof InvalidChoiceError) {
140
- process.stderr.write(`error: ${error.message}\n`);
141
- process.exit(2);
142
- }
143
- if (error instanceof DeviceFlowError || error instanceof GraphqlError) {
144
- process.stdout.write(` ${theme.dim(`could not list projects (${error.message}); pass --project=<uuid>`)}\n`);
145
- }
146
- else {
147
- throw error;
136
+ catch (error) {
137
+ if (error instanceof SelectCancelledError) {
138
+ process.stderr.write(`\n error: cancelled.\n`);
139
+ endWith(130);
140
+ }
141
+ if (error instanceof InvalidChoiceError) {
142
+ process.stderr.write(`error: ${error.message}\n`);
143
+ endWith(2);
144
+ }
145
+ if (error instanceof DeviceFlowError || error instanceof GraphqlError) {
146
+ process.stdout.write(` ${theme.dim(`could not list projects (${error.message}); pass --project=<uuid>`)}\n`);
147
+ }
148
+ else {
149
+ throw error;
150
+ }
148
151
  }
149
152
  }
150
- }
151
- else if (!projectUuid) {
152
- process.stdout.write(` ${theme.dim("sign in once with the login command to pick a project here, or pass --project=<uuid>")}\n`);
153
- }
154
- const result = writeAgentsMd({
155
- packageRoot: PACKAGE_ROOT,
156
- projectRoot,
157
- values: { BRAND: brand },
158
- dryRun: args.dryRun,
153
+ else if (!projectUuid) {
154
+ process.stdout.write(` ${theme.dim("sign in once with the login command to pick a project here, or pass --project=<uuid>")}\n`);
155
+ }
156
+ const result = writeAgentsMd({
157
+ packageRoot: PACKAGE_ROOT,
158
+ projectRoot,
159
+ values: { BRAND: brand },
160
+ dryRun: args.dryRun,
161
+ });
162
+ process.stdout.write(` ${result.agents.changed ? theme.ok("✓") : theme.dim("–")} ${theme.bold("AGENTS.md")} ${theme.dim(`${result.agents.action} in ${result.agentsPath}`)}\n`);
163
+ process.stdout.write(` ${result.claude.changed ? theme.ok("✓") : theme.dim("–")} ${theme.bold("CLAUDE.md")} ${theme.dim(`${result.claude.action} in ${result.claudePath}`)}\n`);
164
+ const environment = args.environment ?? session?.environment ?? "studio";
165
+ const marker = writeProjectMarker(projectRoot, {
166
+ environment,
167
+ ...(projectUuid ? { project: projectUuid } : {}),
168
+ }, args.dryRun);
169
+ process.stdout.write(` ${marker.changed ? theme.ok("✓") : theme.dim("–")} ${theme.bold(".jitera.json")} ${theme.dim(`environment "${environment}"${projectUuid ? `, project ${projectUuid}` : ""}`)}\n`);
170
+ if (args.dryRun) {
171
+ process.stdout.write(`\n ${theme.dim("dry run, nothing was written")}\n`);
172
+ }
173
+ else if (result.changed || marker.changed) {
174
+ process.stdout.write(`\n ${theme.dim("Commit these files so the whole team's assistants read them.")}\n`);
175
+ }
159
176
  });
160
- process.stdout.write(` ${result.agents.changed ? theme.ok("✓") : theme.dim("–")} ${theme.bold("AGENTS.md")} ${theme.dim(`${result.agents.action} in ${result.agentsPath}`)}\n`);
161
- process.stdout.write(` ${result.claude.changed ? theme.ok("✓") : theme.dim("–")} ${theme.bold("CLAUDE.md")} ${theme.dim(`${result.claude.action} in ${result.claudePath}`)}\n`);
162
- const environment = args.environment ?? session?.environment ?? "studio";
163
- const marker = writeProjectMarker(projectRoot, {
164
- environment,
165
- ...(projectUuid ? { project: projectUuid } : {}),
166
- }, args.dryRun);
167
- process.stdout.write(` ${marker.changed ? theme.ok("✓") : theme.dim("–")} ${theme.bold(".jitera.json")} ${theme.dim(`environment "${environment}"${projectUuid ? `, project ${projectUuid}` : ""}`)}\n`);
168
- if (args.dryRun) {
169
- process.stdout.write(`\n ${theme.dim("dry run, nothing was written")}\n`);
170
- }
171
- else if (result.changed || marker.changed) {
172
- process.stdout.write(`\n ${theme.dim("Commit these files so the whole team's assistants read them.")}\n`);
173
- }
174
177
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/bin/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/bin/init.ts"],"names":[],"mappings":"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"}