@jitera/connect 2.0.0 → 2.1.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/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/README.md +31 -0
- package/dist/bin/cli.js +101 -93
- package/dist/bin/cli.js.map +1 -1
- package/dist/bin/connect.js +3 -0
- package/dist/bin/connect.js.map +1 -1
- package/dist/bin/init.js +122 -119
- package/dist/bin/init.js.map +1 -1
- package/dist/bin/login.js +221 -211
- package/dist/bin/login.js.map +1 -1
- package/dist/bin/proxy.js +2 -1
- package/dist/bin/proxy.js.map +1 -1
- package/dist/bin/set-agent.d.ts +3 -0
- package/dist/bin/set-agent.d.ts.map +1 -0
- package/dist/bin/set-agent.js +165 -0
- package/dist/bin/set-agent.js.map +1 -0
- package/dist/cli-session.d.ts +12 -0
- package/dist/cli-session.d.ts.map +1 -1
- package/dist/cli-session.js +25 -0
- package/dist/cli-session.js.map +1 -1
- package/dist/exit.d.ts +8 -0
- package/dist/exit.d.ts.map +1 -0
- package/dist/exit.js +32 -0
- package/dist/exit.js.map +1 -0
- package/dist/graphql.d.ts +6 -0
- package/dist/graphql.d.ts.map +1 -1
- package/dist/graphql.js +58 -1
- package/dist/graphql.js.map +1 -1
- package/dist/hooks/user-prompt-submit.js +5 -2
- package/dist/hooks/user-prompt-submit.js.map +1 -1
- package/dist/project-marker.d.ts +1 -0
- package/dist/project-marker.d.ts.map +1 -1
- package/dist/project-marker.js +26 -0
- package/dist/project-marker.js.map +1 -1
- package/dist/proxy.d.ts +5 -1
- package/dist/proxy.d.ts.map +1 -1
- package/dist/proxy.js +42 -2
- package/dist/proxy.js.map +1 -1
- package/dist/select.d.ts +17 -0
- package/dist/select.d.ts.map +1 -1
- package/dist/select.js +164 -3
- package/dist/select.js.map +1 -1
- package/package.json +1 -1
- package/skills/jitera-memory/SKILL.md +6 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { DiscoveryError } from "../discovery.js";
|
|
3
|
+
import { UnknownEnvironmentError } from "../environments.js";
|
|
4
|
+
import { loadCliSession, transportFor } from "../cli-session.js";
|
|
5
|
+
import { DeviceFlowError, refreshAccessToken } from "../device-flow.js";
|
|
6
|
+
import { GraphqlError, listAgents } from "../graphql.js";
|
|
7
|
+
import { resolveGitRoot } from "../install/project-root.js";
|
|
8
|
+
import { readProjectMarker, writeProjectMarker } from "../project-marker.js";
|
|
9
|
+
import { InvalidChoiceError, NoInputError, SelectCancelledError, chooseManyFrom, } from "../select.js";
|
|
10
|
+
import { createTheme } from "../theme.js";
|
|
11
|
+
import { endWith, runCommand } from "../exit.js";
|
|
12
|
+
const USAGE = [
|
|
13
|
+
"usage: npx @jitera/connect set-agent [--agent=<id>]... [--all] [--dry-run]",
|
|
14
|
+
"",
|
|
15
|
+
"Chooses which agents' memory this repository reads, and records the choice",
|
|
16
|
+
"in .jitera.json so every session here uses it.",
|
|
17
|
+
"",
|
|
18
|
+
"With no flags it lists the project's agents: space selects, enter saves.",
|
|
19
|
+
"",
|
|
20
|
+
" --agent=<id> select an agent without prompting; repeat for several",
|
|
21
|
+
" --all read every agent, clearing any previous selection",
|
|
22
|
+
" --dry-run show what would change without writing",
|
|
23
|
+
].join("\n");
|
|
24
|
+
function parseArgs(argv) {
|
|
25
|
+
const args = { agents: [], all: false, dryRun: false, help: false };
|
|
26
|
+
for (const arg of argv) {
|
|
27
|
+
if (arg === "set-agent")
|
|
28
|
+
continue;
|
|
29
|
+
else if (arg.startsWith("--agent=")) {
|
|
30
|
+
const id = arg.slice("--agent=".length).trim();
|
|
31
|
+
if (id && !args.agents.includes(id))
|
|
32
|
+
args.agents.push(id);
|
|
33
|
+
else if (!id)
|
|
34
|
+
args.blankAgent = true;
|
|
35
|
+
}
|
|
36
|
+
else if (arg === "--all")
|
|
37
|
+
args.all = true;
|
|
38
|
+
else if (arg === "--dry-run")
|
|
39
|
+
args.dryRun = true;
|
|
40
|
+
else if (arg === "--help" || arg === "-h")
|
|
41
|
+
args.help = true;
|
|
42
|
+
else
|
|
43
|
+
args.unknown = arg;
|
|
44
|
+
}
|
|
45
|
+
return args;
|
|
46
|
+
}
|
|
47
|
+
const theme = createTheme({ env: process.env, isTty: Boolean(process.stdout.isTTY) });
|
|
48
|
+
function fail(message, code = 1) {
|
|
49
|
+
process.stderr.write(`\n ${theme.err("error")} ${message}\n`);
|
|
50
|
+
endWith(code);
|
|
51
|
+
}
|
|
52
|
+
await runCommand(async () => {
|
|
53
|
+
const args = parseArgs(process.argv.slice(2));
|
|
54
|
+
if (args.help) {
|
|
55
|
+
process.stdout.write(`${USAGE}\n`);
|
|
56
|
+
endWith(0);
|
|
57
|
+
}
|
|
58
|
+
if (args.unknown) {
|
|
59
|
+
process.stderr.write(`error: unrecognised argument "${args.unknown}"\n${USAGE}\n`);
|
|
60
|
+
endWith(2);
|
|
61
|
+
}
|
|
62
|
+
if (args.blankAgent && args.agents.length === 0) {
|
|
63
|
+
// Otherwise this wrote `"agents": [""]`, which reads back as no selection at
|
|
64
|
+
// all while the command claimed to have recorded one.
|
|
65
|
+
process.stderr.write(`error: --agent= needs an id\n${USAGE}\n`);
|
|
66
|
+
endWith(2);
|
|
67
|
+
}
|
|
68
|
+
if (args.all && args.agents.length > 0) {
|
|
69
|
+
process.stderr.write(`error: --all and --agent are contradictory\n${USAGE}\n`);
|
|
70
|
+
endWith(2);
|
|
71
|
+
}
|
|
72
|
+
const projectRoot = resolveGitRoot(process.cwd());
|
|
73
|
+
if (!projectRoot) {
|
|
74
|
+
fail("this is not a git repository, and the binding belongs at a repository root.", 2);
|
|
75
|
+
}
|
|
76
|
+
// The selection lives beside the project binding, so there has to be one.
|
|
77
|
+
const marker = readProjectMarker(projectRoot);
|
|
78
|
+
if (!marker?.project) {
|
|
79
|
+
fail(marker
|
|
80
|
+
? "this repository's .jitera.json records no project, so there are no agents to choose from. " +
|
|
81
|
+
"Run: npx @jitera/connect init --project=<uuid>"
|
|
82
|
+
: "this repository is not bound to a project yet. Run: npx @jitera/connect init");
|
|
83
|
+
}
|
|
84
|
+
function save(ids, names) {
|
|
85
|
+
let written;
|
|
86
|
+
try {
|
|
87
|
+
written = writeProjectMarker(projectRoot, { agents: ids }, args.dryRun);
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
fail(`could not write .jitera.json: ${error.message}`);
|
|
91
|
+
}
|
|
92
|
+
const verb = args.dryRun ? "would record" : "recorded";
|
|
93
|
+
if (ids.length === 0) {
|
|
94
|
+
process.stdout.write(`\n ${theme.ok("✓")} ${verb} ${theme.bold("every agent")} ${theme.dim(`in ${written.path}`)}\n`);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
process.stdout.write(`\n ${theme.ok("✓")} ${verb} ${theme.bold(`${ids.length} agent(s)`)} ${theme.dim(`in ${written.path}`)}\n`);
|
|
98
|
+
for (const name of names ?? ids)
|
|
99
|
+
process.stdout.write(` ${theme.dim("·")} ${name}\n`);
|
|
100
|
+
}
|
|
101
|
+
if (!written.changed) {
|
|
102
|
+
process.stdout.write(` ${theme.dim("nothing changed")}\n`);
|
|
103
|
+
}
|
|
104
|
+
endWith(0);
|
|
105
|
+
}
|
|
106
|
+
if (args.all)
|
|
107
|
+
save([]);
|
|
108
|
+
if (args.agents.length > 0)
|
|
109
|
+
save(args.agents);
|
|
110
|
+
const session = loadCliSession();
|
|
111
|
+
if (!session) {
|
|
112
|
+
fail("no stored sign-in, so the agents cannot be listed. Run `npx @jitera/connect login`, " +
|
|
113
|
+
"or pass --agent=<id> if you already know the ids.");
|
|
114
|
+
}
|
|
115
|
+
let agents;
|
|
116
|
+
try {
|
|
117
|
+
const transport = await transportFor(session, refreshAccessToken);
|
|
118
|
+
agents = await listAgents(transport, marker.project);
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
if (error instanceof UnknownEnvironmentError)
|
|
122
|
+
fail(error.message, 2);
|
|
123
|
+
if (error instanceof DiscoveryError ||
|
|
124
|
+
error instanceof DeviceFlowError ||
|
|
125
|
+
error instanceof GraphqlError) {
|
|
126
|
+
fail(`${error.message} Pass --agent=<id> to set the selection without listing.`);
|
|
127
|
+
}
|
|
128
|
+
if (error instanceof Error)
|
|
129
|
+
fail(error.message);
|
|
130
|
+
throw error;
|
|
131
|
+
}
|
|
132
|
+
if (agents.length === 0) {
|
|
133
|
+
// An empty list is also what the server returns when the policy scope hides
|
|
134
|
+
// every agent, so name both causes rather than assert the wrong one.
|
|
135
|
+
fail("no published agents came back for this project. Either it has none yet, or " +
|
|
136
|
+
"your account cannot see them. Check the project in the studio, or pass " +
|
|
137
|
+
"--agent=<id> if you know the id.");
|
|
138
|
+
}
|
|
139
|
+
const already = new Set(marker.agents ?? []);
|
|
140
|
+
let chosen;
|
|
141
|
+
try {
|
|
142
|
+
chosen = await chooseManyFrom({
|
|
143
|
+
items: agents,
|
|
144
|
+
prompt: "Which agents' memory should this repository read?",
|
|
145
|
+
label: (agent) => (agent.description ? `${agent.name} — ${agent.description}` : agent.name),
|
|
146
|
+
theme,
|
|
147
|
+
selected: (agent) => already.has(agent.id),
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
if (error instanceof SelectCancelledError)
|
|
152
|
+
fail("cancelled.", 130);
|
|
153
|
+
if (error instanceof InvalidChoiceError)
|
|
154
|
+
fail(error.message, 2);
|
|
155
|
+
if (error instanceof NoInputError) {
|
|
156
|
+
fail("nothing to read the answer from. Pass --agent=<id> or --all instead.", 2);
|
|
157
|
+
}
|
|
158
|
+
throw error;
|
|
159
|
+
}
|
|
160
|
+
if (chosen.length === 0) {
|
|
161
|
+
process.stdout.write(`\n ${theme.dim("nothing selected, so this repository reads every agent.")}\n`);
|
|
162
|
+
}
|
|
163
|
+
save(chosen.map((agent) => agent.id), chosen.map((agent) => agent.name));
|
|
164
|
+
});
|
|
165
|
+
//# sourceMappingURL=set-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-agent.js","sourceRoot":"","sources":["../../src/bin/set-agent.ts"],"names":[],"mappings":"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"}
|
package/dist/cli-session.d.ts
CHANGED
|
@@ -9,4 +9,16 @@ export declare function sessionPath(env?: NodeJS.ProcessEnv): string;
|
|
|
9
9
|
export declare function saveCliSession(session: CliSession, env?: NodeJS.ProcessEnv): void;
|
|
10
10
|
export declare function loadCliSession(env?: NodeJS.ProcessEnv): CliSession | undefined;
|
|
11
11
|
export declare function isExpired(session: CliSession, now?: number): boolean;
|
|
12
|
+
export interface SessionTransport {
|
|
13
|
+
readonly automationUrl: string;
|
|
14
|
+
readonly accessToken: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function transportFor(session: CliSession, refresh: (input: {
|
|
17
|
+
automationUrl: string;
|
|
18
|
+
refreshToken: string;
|
|
19
|
+
}) => Promise<{
|
|
20
|
+
accessToken: string;
|
|
21
|
+
refreshToken?: string | undefined;
|
|
22
|
+
expiresInSeconds?: number | undefined;
|
|
23
|
+
}>, now?: number): Promise<SessionTransport>;
|
|
12
24
|
//# sourceMappingURL=cli-session.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-session.d.ts","sourceRoot":"","sources":["../src/cli-session.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC;AAED,wBAAgB,WAAW,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAIxE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,IAAI,CAQ9F;AAED,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,UAAU,GAAG,SAAS,CAY3F;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,GAAE,MAAmB,GAAG,OAAO,CAEhF"}
|
|
1
|
+
{"version":3,"file":"cli-session.d.ts","sourceRoot":"","sources":["../src/cli-session.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC;AAED,wBAAgB,WAAW,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAIxE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,IAAI,CAQ9F;AAED,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,UAAU,GAAG,SAAS,CAY3F;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,GAAE,MAAmB,GAAG,OAAO,CAEhF;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAID,wBAAsB,YAAY,CAChC,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,CAAC,KAAK,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,CAAC;IAC3E,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC,CAAC,EACF,GAAG,GAAE,MAAmB,GACvB,OAAO,CAAC,gBAAgB,CAAC,CA0B3B"}
|
package/dist/cli-session.js
CHANGED
|
@@ -36,4 +36,29 @@ export function loadCliSession(env = process.env) {
|
|
|
36
36
|
export function isExpired(session, now = Date.now()) {
|
|
37
37
|
return typeof session.expiresAt === "number" && now >= session.expiresAt - EXPIRY_MARGIN_MS;
|
|
38
38
|
}
|
|
39
|
+
// A stored sign-in, refreshed if it has aged out. Shared by every command that
|
|
40
|
+
// talks to the automation API without sending the user back to the browser.
|
|
41
|
+
export async function transportFor(session, refresh, now = Date.now()) {
|
|
42
|
+
if (!isExpired(session, now)) {
|
|
43
|
+
return { automationUrl: session.automationUrl, accessToken: session.accessToken };
|
|
44
|
+
}
|
|
45
|
+
if (!session.refreshToken) {
|
|
46
|
+
throw new Error("the stored sign-in expired. Run login again.");
|
|
47
|
+
}
|
|
48
|
+
const refreshed = await refresh({
|
|
49
|
+
automationUrl: session.automationUrl,
|
|
50
|
+
refreshToken: session.refreshToken,
|
|
51
|
+
});
|
|
52
|
+
saveCliSession({
|
|
53
|
+
...session,
|
|
54
|
+
accessToken: refreshed.accessToken,
|
|
55
|
+
refreshToken: refreshed.refreshToken ?? session.refreshToken,
|
|
56
|
+
// Without a new expiry, drop the old one rather than keep a timestamp that
|
|
57
|
+
// is already in the past and would force a refresh on every command.
|
|
58
|
+
expiresAt: refreshed.expiresInSeconds
|
|
59
|
+
? now + refreshed.expiresInSeconds * 1000
|
|
60
|
+
: undefined,
|
|
61
|
+
});
|
|
62
|
+
return { automationUrl: session.automationUrl, accessToken: refreshed.accessToken };
|
|
63
|
+
}
|
|
39
64
|
//# sourceMappingURL=cli-session.js.map
|
package/dist/cli-session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-session.js","sourceRoot":"","sources":["../src/cli-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxF,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,+EAA+E;AAC/E,qCAAqC;AACrC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAUhC,MAAM,UAAU,WAAW,CAAC,GAAG,GAAsB,OAAO,CAAC,GAAG;IAC9D,MAAM,QAAQ,GAAG,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;IACrE,OAAO,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAmB,EAAE,GAAG,GAAsB,OAAO,CAAC,GAAG;IACtF,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3D,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE;QAChE,QAAQ,EAAE,MAAM;QAChB,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;IACH,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAG,GAAsB,OAAO,CAAC,GAAG;IACjE,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAe,CAAC;QACpE,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;YACvF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAmB,EAAE,GAAG,GAAW,IAAI,CAAC,GAAG,EAAE;IACrE,OAAO,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,IAAI,GAAG,IAAI,OAAO,CAAC,SAAS,GAAG,gBAAgB,CAAC;AAC9F,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli-session.js","sourceRoot":"","sources":["../src/cli-session.ts"],"names":[],"mappings":"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"}
|
package/dist/exit.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare class ProcessExit extends Error {
|
|
2
|
+
readonly name = "ProcessExit";
|
|
3
|
+
readonly code: number;
|
|
4
|
+
constructor(code: number);
|
|
5
|
+
}
|
|
6
|
+
export declare function endWith(code: number): never;
|
|
7
|
+
export declare function runCommand(body: () => Promise<void> | void): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=exit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exit.d.ts","sourceRoot":"","sources":["../src/exit.ts"],"names":[],"mappings":"AAKA,qBAAa,WAAY,SAAQ,KAAK;IACpC,SAAkB,IAAI,iBAAiB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,YAAY,IAAI,EAAE,MAAM,EAGvB;CACF;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAE3C;AAID,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAWhF"}
|
package/dist/exit.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// Ending a command by calling process.exit() aborts the process on Windows when
|
|
2
|
+
// a handle opened by a network call is still closing: libuv asserts in
|
|
3
|
+
// async.c and the shell sees a crash code even though the command had already
|
|
4
|
+
// printed the right answer. Unwinding to the entry point and letting Node end
|
|
5
|
+
// on its own keeps the exit code the command actually meant.
|
|
6
|
+
export class ProcessExit extends Error {
|
|
7
|
+
name = "ProcessExit";
|
|
8
|
+
code;
|
|
9
|
+
constructor(code) {
|
|
10
|
+
super(`exit ${code}`);
|
|
11
|
+
this.code = code;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export function endWith(code) {
|
|
15
|
+
throw new ProcessExit(code);
|
|
16
|
+
}
|
|
17
|
+
// Runs a command body and settles the exit code without tearing the loop down
|
|
18
|
+
// mid-close. Anything that is not a ProcessExit keeps its stack and is rethrown.
|
|
19
|
+
export async function runCommand(body) {
|
|
20
|
+
try {
|
|
21
|
+
await body();
|
|
22
|
+
process.exitCode = 0;
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
if (error instanceof ProcessExit) {
|
|
26
|
+
process.exitCode = error.code;
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
throw error;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=exit.js.map
|
package/dist/exit.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exit.js","sourceRoot":"","sources":["../src/exit.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,uEAAuE;AACvE,8EAA8E;AAC9E,8EAA8E;AAC9E,6DAA6D;AAC7D,MAAM,OAAO,WAAY,SAAQ,KAAK;IAClB,IAAI,GAAG,aAAa,CAAC;IAC9B,IAAI,CAAS;IAEtB,YAAY,IAAY;QACtB,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,8EAA8E;AAC9E,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAgC;IAC/D,IAAI,CAAC;QACH,MAAM,IAAI,EAAE,CAAC;QACb,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;YAC9B,OAAO;QACT,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/dist/graphql.d.ts
CHANGED
|
@@ -22,6 +22,12 @@ export interface Organisation {
|
|
|
22
22
|
}
|
|
23
23
|
export declare function listOrganisations(transport: GraphqlTransport): Promise<Organisation[]>;
|
|
24
24
|
export declare function listProjects(transport: GraphqlTransport, organisation?: Organisation): Promise<ProjectSummary[]>;
|
|
25
|
+
export interface AgentSummary {
|
|
26
|
+
readonly id: string;
|
|
27
|
+
readonly name: string;
|
|
28
|
+
readonly description: string | null;
|
|
29
|
+
}
|
|
30
|
+
export declare function listAgents(transport: GraphqlTransport, projectUuid: string): Promise<AgentSummary[]>;
|
|
25
31
|
export type McpAccess = "read" | "read_write";
|
|
26
32
|
export interface CreatedApiKey {
|
|
27
33
|
readonly rawKey: string;
|
package/dist/graphql.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql.d.ts","sourceRoot":"","sources":["../src/graphql.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAkB,IAAI,kBAAkB;IACxC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAEnC,YAAY,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,EAOvD;CACF;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;
|
|
1
|
+
{"version":3,"file":"graphql.d.ts","sourceRoot":"","sources":["../src/graphql.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAkB,IAAI,kBAAkB;IACxC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAEnC,YAAY,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,EAOvD;CACF;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAkDD,wBAAsB,KAAK,CAAC,CAAC,EAC3B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,EAAE,aAAa,EAAE,WAAW,EAAE,SAAiB,EAAE,SAAkB,EAAE,EAAE,gBAAgB,GACtF,OAAO,CAAC,CAAC,CAAC,CA0CZ;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AA+BD,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAW5F;AAqCD,wBAAsB,YAAY,CAChC,SAAS,EAAE,gBAAgB,EAC3B,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,cAAc,EAAE,CAAC,CAiB3B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AA0BD,wBAAsB,UAAU,CAC9B,SAAS,EAAE,gBAAgB,EAC3B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,EAAE,CAAC,CAiBzB;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,YAAY,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAYD,KAAK,cAAc,GAAG,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;AAWpE,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,EAAE,CAKhE;AA6BD,wBAAsB,YAAY,CAChC,OAAO,EAAE;IAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;CAAE,EAC/F,SAAS,EAAE,gBAAgB,GAC1B,OAAO,CAAC,aAAa,CAAC,CAMxB;AAID,wBAAsB,gBAAgB,CACpC,OAAO,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;CAAE,EACjE,SAAS,EAAE,gBAAgB,GAC1B,OAAO,CAAC,aAAa,CAAC,CAMxB;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAK/D"}
|
package/dist/graphql.js
CHANGED
|
@@ -8,6 +8,39 @@ export class GraphqlError extends Error {
|
|
|
8
8
|
this.errors = errors;
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
|
+
// The API raises Errors::ApiError, whose message is the bare code when no
|
|
12
|
+
// custom text is given, so "UNAUTHORIZED" is what reaches the terminal. These
|
|
13
|
+
// say what the code means and what to do, which matters most for the api-key
|
|
14
|
+
// feature toggle: an account without it fails on the ordinary login path.
|
|
15
|
+
function describe(code, resource) {
|
|
16
|
+
if (code === "UNAUTHORIZED" && resource === "api_key") {
|
|
17
|
+
return ("api keys are not enabled for this account. Ask an owner to enable the " +
|
|
18
|
+
"api keys feature, or sign in with an account that has it");
|
|
19
|
+
}
|
|
20
|
+
if (code === "UNAUTHORIZED" || code === "FORBIDDEN") {
|
|
21
|
+
return resource
|
|
22
|
+
? `your account does not have permission for this ${resource.replace(/_/g, " ")}`
|
|
23
|
+
: "your account does not have permission for that";
|
|
24
|
+
}
|
|
25
|
+
if (code === "NOT_FOUND") {
|
|
26
|
+
return resource
|
|
27
|
+
? `no ${resource.replace(/_/g, " ")} with that id, or your account cannot see it`
|
|
28
|
+
: "not found, or your account cannot see it";
|
|
29
|
+
}
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
function readableError(error) {
|
|
33
|
+
const message = error.message ?? "unknown error";
|
|
34
|
+
const code = error.extensions?.code;
|
|
35
|
+
if (!code)
|
|
36
|
+
return message;
|
|
37
|
+
const explained = describe(code, error.extensions?.resource);
|
|
38
|
+
if (!explained)
|
|
39
|
+
return message;
|
|
40
|
+
// Keep the code when the backend said more than the code itself, so nothing
|
|
41
|
+
// the server chose to say is thrown away.
|
|
42
|
+
return message === code ? explained : `${explained} (${message})`;
|
|
43
|
+
}
|
|
11
44
|
export async function query(operation, document, variables, { automationUrl, accessToken, fetchImpl = fetch, timeoutMs = 20_000 }) {
|
|
12
45
|
const url = `${automationUrl.replace(/\/$/, "")}/graphql`;
|
|
13
46
|
let response;
|
|
@@ -39,7 +72,7 @@ export async function query(operation, document, variables, { automationUrl, acc
|
|
|
39
72
|
throw new GraphqlError(operation, [`HTTP ${response.status} with an unreadable body`]);
|
|
40
73
|
}
|
|
41
74
|
if (payload.errors?.length) {
|
|
42
|
-
throw new GraphqlError(operation, payload.errors.map(
|
|
75
|
+
throw new GraphqlError(operation, payload.errors.map(readableError));
|
|
43
76
|
}
|
|
44
77
|
if (payload.data === undefined || payload.data === null) {
|
|
45
78
|
throw new GraphqlError(operation, []);
|
|
@@ -105,6 +138,30 @@ export async function listProjects(transport, organisation) {
|
|
|
105
138
|
}
|
|
106
139
|
return [...seen.values()];
|
|
107
140
|
}
|
|
141
|
+
// `status: published` matches what the studio lists: draft workflows are not
|
|
142
|
+
// agents anyone is working with yet.
|
|
143
|
+
const AGENTS_PAGE_SIZE = 200;
|
|
144
|
+
const AGENTS_DOCUMENT = `query ConnectAgents($projectUuid: String!, $limit: Int!) {
|
|
145
|
+
boostWorkflows(
|
|
146
|
+
where: { projectUuid: { _eq: $projectUuid }, status: { _eq: "published" } }
|
|
147
|
+
orderBy: [{ createdAt: DESC_NULLS_LAST }]
|
|
148
|
+
limit: $limit
|
|
149
|
+
) {
|
|
150
|
+
id
|
|
151
|
+
name
|
|
152
|
+
description
|
|
153
|
+
}
|
|
154
|
+
}`;
|
|
155
|
+
export async function listAgents(transport, projectUuid) {
|
|
156
|
+
const data = await query("ConnectAgents", AGENTS_DOCUMENT, { projectUuid, limit: AGENTS_PAGE_SIZE }, transport);
|
|
157
|
+
return (data.boostWorkflows ?? [])
|
|
158
|
+
.filter((row) => typeof row?.id === "string" && row.id.length > 0)
|
|
159
|
+
.map((row) => ({
|
|
160
|
+
id: row.id,
|
|
161
|
+
name: row.name?.trim() || row.id,
|
|
162
|
+
description: row.description?.trim() || null,
|
|
163
|
+
}));
|
|
164
|
+
}
|
|
108
165
|
const CREATE_KEY_DOCUMENT = `mutation ConnectCreateApiKey($params: CreateApiKeyInput!) {
|
|
109
166
|
createApiKey(params: $params) {
|
|
110
167
|
rawKey
|
package/dist/graphql.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql.js","sourceRoot":"","sources":["../src/graphql.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAa,SAAQ,KAAK;IACnB,IAAI,GAAG,cAAc,CAAC;IAC/B,MAAM,CAAoB;IAEnC,YAAY,SAAiB,EAAE,MAAyB;QACtD,KAAK,CACH,MAAM,CAAC,MAAM;YACX,CAAC,CAAC,GAAG,SAAS,YAAY,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC7C,CAAC,CAAC,GAAG,SAAS,gCAAgC,CACjD,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"graphql.js","sourceRoot":"","sources":["../src/graphql.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,6 +50,9 @@ else {
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
const transport = { url, apiKey, projectUuid: marker.project };
|
|
53
|
+
// `set-agent` records which agents this repository reads. Absent means every
|
|
54
|
+
// agent, which is what the tools do when the argument is omitted.
|
|
55
|
+
const agents = marker.agents && marker.agents.length > 0 ? [...marker.agents] : undefined;
|
|
53
56
|
const task = promptText(input).slice(0, MAX_TASK_CHARS);
|
|
54
57
|
// The blind recall serves two purposes: it is what deployments predating the
|
|
55
58
|
// composite tool answer, and it is the right call when there is no prompt text
|
|
@@ -58,7 +61,7 @@ const task = promptText(input).slice(0, MAX_TASK_CHARS);
|
|
|
58
61
|
const recall = () => callTool({
|
|
59
62
|
...transport,
|
|
60
63
|
name: "recall_jitera_memory",
|
|
61
|
-
args: {},
|
|
64
|
+
args: agents ? { agents } : {},
|
|
62
65
|
timeoutMs: RECALL_TIMEOUT_MS,
|
|
63
66
|
});
|
|
64
67
|
// The fallback exists for deployments that predate the composite tool, so it
|
|
@@ -88,7 +91,7 @@ try {
|
|
|
88
91
|
? await callTool({
|
|
89
92
|
...transport,
|
|
90
93
|
name: "gather_jitera_context",
|
|
91
|
-
args: { task, budget: MAX_CONTEXT_CHARS },
|
|
94
|
+
args: { task, budget: MAX_CONTEXT_CHARS, ...(agents ? { agents } : {}) },
|
|
92
95
|
timeoutMs: GATHER_TIMEOUT_MS,
|
|
93
96
|
})
|
|
94
97
|
: await recall();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-prompt-submit.js","sourceRoot":"","sources":["../../src/hooks/user-prompt-submit.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B,+EAA+E;AAC/E,2EAA2E;AAC3E,2EAA2E;AAC3E,uBAAuB;AACvB,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAChC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B,6EAA6E;AAC7E,iEAAiE;AACjE,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;AAE9B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,IAAI,EAAE,CAAC;AACxE,IAAI,CAAC,MAAM;IAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAE7B,8EAA8E;AAC9E,2EAA2E;AAC3E,8EAA8E;AAC9E,kDAAkD;AAClD,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7D,IAAI,CAAC,MAAM;IAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAE7B,8EAA8E;AAC9E,6EAA6E;AAC7E,eAAe;AACf,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC;IAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAE5D,IAAI,GAAW,CAAC;AAChB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAC/C,IAAI,QAAQ,EAAE,CAAC;IACb,GAAG,GAAG,QAAQ,CAAC;AACjB,CAAC;KAAM,CAAC;IACN,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC;YAC1C,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC;YAC5D,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;SAC5C,CAAC,CAAC;QACH,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAoB,KAAe,CAAC,OAAO,IAAI,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,SAAS,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;AAE/D,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;AAExD,6EAA6E;AAC7E,+EAA+E;AAC/E,gFAAgF;AAChF,wDAAwD;AACxD,MAAM,MAAM,GAAG,GAAG,EAAE,CAClB,QAAQ,CAAC;IACP,GAAG,SAAS;IACZ,IAAI,EAAE,sBAAsB;IAC5B,IAAI,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"user-prompt-submit.js","sourceRoot":"","sources":["../../src/hooks/user-prompt-submit.ts"],"names":[],"mappings":"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"}
|
package/dist/project-marker.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export declare const MARKER_FILENAME = ".jitera.json";
|
|
|
2
2
|
export interface ProjectMarker {
|
|
3
3
|
readonly environment?: string | undefined;
|
|
4
4
|
readonly project?: string | undefined;
|
|
5
|
+
readonly agents?: readonly string[] | undefined;
|
|
5
6
|
}
|
|
6
7
|
export interface FoundProjectMarker extends ProjectMarker {
|
|
7
8
|
readonly path: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-marker.d.ts","sourceRoot":"","sources":["../src/project-marker.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,eAAe,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"project-marker.d.ts","sourceRoot":"","sources":["../src/project-marker.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,eAAe,iBAAiB,CAAC;AAU9C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAGtC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CACjD;AAED,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAoDlF;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,EACrB,MAAM,UAAQ,GACb,iBAAiB,CAiCnB"}
|
package/dist/project-marker.js
CHANGED
|
@@ -4,6 +4,9 @@ export const MARKER_FILENAME = ".jitera.json";
|
|
|
4
4
|
// Environments are studio, studio-stage, studio-NN. Anything else in the file
|
|
5
5
|
// is not echoed back into session context.
|
|
6
6
|
const SAFE_ENVIRONMENT = /^[A-Za-z0-9-]{1,64}$/;
|
|
7
|
+
// A committed marker is editable by hand, and every selected id becomes a
|
|
8
|
+
// clause in the server's filter, so the list is bounded rather than trusted.
|
|
9
|
+
const MAX_AGENTS = 100;
|
|
7
10
|
export function readProjectMarker(startDir) {
|
|
8
11
|
let dir = startDir;
|
|
9
12
|
for (;;) {
|
|
@@ -25,12 +28,24 @@ export function readProjectMarker(startDir) {
|
|
|
25
28
|
const fields = parsed;
|
|
26
29
|
const environment = fields["environment"];
|
|
27
30
|
const project = fields["project"];
|
|
31
|
+
const agents = fields["agents"];
|
|
32
|
+
// Trimmed and de-duplicated: an id with stray whitespace matches no
|
|
33
|
+
// partition on the server and would silently narrow recall to nothing.
|
|
34
|
+
const agentIds = Array.isArray(agents)
|
|
35
|
+
? [
|
|
36
|
+
...new Set(agents
|
|
37
|
+
.filter((id) => typeof id === "string")
|
|
38
|
+
.map((id) => id.trim())
|
|
39
|
+
.filter((id) => id !== "")),
|
|
40
|
+
].slice(0, MAX_AGENTS)
|
|
41
|
+
: undefined;
|
|
28
42
|
return {
|
|
29
43
|
path,
|
|
30
44
|
...(typeof environment === "string" && SAFE_ENVIRONMENT.test(environment)
|
|
31
45
|
? { environment }
|
|
32
46
|
: {}),
|
|
33
47
|
...(typeof project === "string" ? { project } : {}),
|
|
48
|
+
...(agentIds && agentIds.length > 0 ? { agents: agentIds } : {}),
|
|
34
49
|
};
|
|
35
50
|
}
|
|
36
51
|
// Never look past the repository root. `init` writes the marker there, so
|
|
@@ -62,6 +77,17 @@ export function writeProjectMarker(root, marker, dryRun = false) {
|
|
|
62
77
|
...(marker.environment ? { environment: marker.environment } : {}),
|
|
63
78
|
...(marker.project ? { project: marker.project } : {}),
|
|
64
79
|
};
|
|
80
|
+
// An empty list is a real choice - "read every agent" - and has to erase a
|
|
81
|
+
// previous selection rather than be mistaken for "leave it alone".
|
|
82
|
+
if (marker.agents) {
|
|
83
|
+
const ids = [
|
|
84
|
+
...new Set(marker.agents.map((id) => id.trim()).filter((id) => id !== "")),
|
|
85
|
+
].slice(0, MAX_AGENTS);
|
|
86
|
+
if (ids.length > 0)
|
|
87
|
+
next["agents"] = ids;
|
|
88
|
+
else
|
|
89
|
+
delete next["agents"];
|
|
90
|
+
}
|
|
65
91
|
const serialized = `${JSON.stringify(next, undefined, 2)}\n`;
|
|
66
92
|
const changed = before !== serialized;
|
|
67
93
|
if (changed && !dryRun)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-marker.js","sourceRoot":"","sources":["../src/project-marker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,CAAC,MAAM,eAAe,GAAG,cAAc,CAAC;AAE9C,8EAA8E;AAC9E,2CAA2C;AAC3C,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"project-marker.js","sourceRoot":"","sources":["../src/project-marker.ts"],"names":[],"mappings":"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"}
|
package/dist/proxy.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type JsonRpcRequest } from "./mcp-client.ts";
|
|
1
2
|
export interface ProxyStreams {
|
|
2
3
|
readonly input: NodeJS.ReadableStream;
|
|
3
4
|
readonly output: NodeJS.WritableStream;
|
|
@@ -8,9 +9,12 @@ export interface ProxyConfig {
|
|
|
8
9
|
readonly apiKey: string;
|
|
9
10
|
readonly instructions?: string | undefined;
|
|
10
11
|
readonly projectUuid?: string | undefined;
|
|
12
|
+
readonly agents?: readonly string[] | undefined;
|
|
11
13
|
}
|
|
12
14
|
export declare function resolveProjectUuid(env: NodeJS.ProcessEnv, cwd?: string): string | undefined;
|
|
13
|
-
export declare function
|
|
15
|
+
export declare function resolveAgents(cwd: string, env?: NodeJS.ProcessEnv): readonly string[] | undefined;
|
|
16
|
+
export declare function withAgentSelection(request: JsonRpcRequest, agents: readonly string[] | undefined): JsonRpcRequest;
|
|
17
|
+
export declare function runProxy({ url, apiKey, instructions, projectUuid, agents }: ProxyConfig, { input, output, log }: ProxyStreams): Promise<void>;
|
|
14
18
|
export interface ProxyEnvironment extends ProxyConfig {
|
|
15
19
|
readonly brand: string;
|
|
16
20
|
}
|
package/dist/proxy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAIA,OAAO,EAAyB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAK7E,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,cAAc,CAAC;CACrC;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CACjD;AAID,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,GAAG,GAAE,MAAsB,GAC1B,MAAM,GAAG,SAAS,CAIpB;AAED,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,SAAS,MAAM,EAAE,GAAG,SAAS,CAS/B;AAOD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GACpC,cAAc,CAsBhB;AAiBD,wBAAsB,QAAQ,CAC5B,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,WAAW,EAC/D,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,YAAY,GACnC,OAAO,CAAC,IAAI,CAAC,CAwCf;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAW7F"}
|