agent-issues 0.0.121 → 0.0.127
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/dist/build-info.json +3 -0
- package/dist/cli.js +97746 -26
- package/kanban/dist/assets/index-CIAg6qj5.css +1 -0
- package/kanban/dist/assets/index-DaYQjJS7.js +920 -0
- package/kanban/dist/index.html +13 -0
- package/package.json +12 -11
- package/site/dist/assets/{index-Cx-fLU3e.js → index-BRvRYF7I.js} +195 -146
- package/site/dist/index.html +1 -1
- package/dist/agent-installer.d.ts +0 -49
- package/dist/agent-installer.js +0 -171
- package/dist/agent-installer.js.map +0 -1
- package/dist/auth-session.d.ts +0 -40
- package/dist/auth-session.js +0 -107
- package/dist/auth-session.js.map +0 -1
- package/dist/body-backfill.d.ts +0 -26
- package/dist/body-backfill.js +0 -219
- package/dist/body-backfill.js.map +0 -1
- package/dist/build-mode.d.ts +0 -1
- package/dist/build-mode.js +0 -1
- package/dist/build-mode.js.map +0 -1
- package/dist/cli/commands/auth.d.ts +0 -61
- package/dist/cli/commands/auth.js +0 -134
- package/dist/cli/commands/auth.js.map +0 -1
- package/dist/cli/commands/backfill.d.ts +0 -8
- package/dist/cli/commands/backfill.js +0 -36
- package/dist/cli/commands/backfill.js.map +0 -1
- package/dist/cli/commands/comments.d.ts +0 -34
- package/dist/cli/commands/comments.js +0 -124
- package/dist/cli/commands/comments.js.map +0 -1
- package/dist/cli/commands/context.d.ts +0 -13
- package/dist/cli/commands/context.js +0 -156
- package/dist/cli/commands/context.js.map +0 -1
- package/dist/cli/commands/entities.d.ts +0 -91
- package/dist/cli/commands/entities.js +0 -420
- package/dist/cli/commands/entities.js.map +0 -1
- package/dist/cli/commands/export.d.ts +0 -20
- package/dist/cli/commands/export.js +0 -98
- package/dist/cli/commands/export.js.map +0 -1
- package/dist/cli/commands/fallback.d.ts +0 -6
- package/dist/cli/commands/fallback.js +0 -10
- package/dist/cli/commands/fallback.js.map +0 -1
- package/dist/cli/commands/handoff.d.ts +0 -1
- package/dist/cli/commands/handoff.js +0 -2
- package/dist/cli/commands/handoff.js.map +0 -1
- package/dist/cli/commands/installers.d.ts +0 -37
- package/dist/cli/commands/installers.js +0 -78
- package/dist/cli/commands/installers.js.map +0 -1
- package/dist/cli/commands/kanban.d.ts +0 -8
- package/dist/cli/commands/kanban.js +0 -83
- package/dist/cli/commands/kanban.js.map +0 -1
- package/dist/cli/commands/meta.d.ts +0 -14
- package/dist/cli/commands/meta.js +0 -33
- package/dist/cli/commands/meta.js.map +0 -1
- package/dist/cli/commands/plan-entries.d.ts +0 -30
- package/dist/cli/commands/plan-entries.js +0 -94
- package/dist/cli/commands/plan-entries.js.map +0 -1
- package/dist/cli/commands/site.d.ts +0 -29
- package/dist/cli/commands/site.js +0 -89
- package/dist/cli/commands/site.js.map +0 -1
- package/dist/cli/commands/sql.d.ts +0 -6
- package/dist/cli/commands/sql.js +0 -21
- package/dist/cli/commands/sql.js.map +0 -1
- package/dist/cli/commands/synchronize.d.ts +0 -12
- package/dist/cli/commands/synchronize.js +0 -31
- package/dist/cli/commands/synchronize.js.map +0 -1
- package/dist/cli/commands/tenants.d.ts +0 -29
- package/dist/cli/commands/tenants.js +0 -101
- package/dist/cli/commands/tenants.js.map +0 -1
- package/dist/cli/index.d.ts +0 -4
- package/dist/cli/index.js +0 -120
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/renderers.d.ts +0 -250
- package/dist/cli/renderers.js +0 -286
- package/dist/cli/renderers.js.map +0 -1
- package/dist/cli/shared.d.ts +0 -97
- package/dist/cli/shared.js +0 -192
- package/dist/cli/shared.js.map +0 -1
- package/dist/cli.d.ts +0 -11
- package/dist/cli.js.map +0 -1
- package/dist/context-cli.d.ts +0 -16
- package/dist/context-cli.js +0 -131
- package/dist/context-cli.js.map +0 -1
- package/dist/daemon/daemon-lifecycle.d.ts +0 -1
- package/dist/daemon/daemon-lifecycle.js +0 -2
- package/dist/daemon/daemon-lifecycle.js.map +0 -1
- package/dist/daemon/daemon-main.d.ts +0 -14
- package/dist/daemon/daemon-main.js +0 -30
- package/dist/daemon/daemon-main.js.map +0 -1
- package/dist/daemon/local-daemon-store.d.ts +0 -21
- package/dist/daemon/local-daemon-store.js +0 -31
- package/dist/daemon/local-daemon-store.js.map +0 -1
- package/dist/entity-projection.d.ts +0 -141
- package/dist/entity-projection.js +0 -147
- package/dist/entity-projection.js.map +0 -1
- package/dist/entra-device-login.d.ts +0 -12
- package/dist/entra-device-login.js +0 -40
- package/dist/entra-device-login.js.map +0 -1
- package/dist/export-files.d.ts +0 -24
- package/dist/export-files.js +0 -230
- package/dist/export-files.js.map +0 -1
- package/dist/export-markdown.d.ts +0 -24
- package/dist/export-markdown.js +0 -343
- package/dist/export-markdown.js.map +0 -1
- package/dist/help.d.ts +0 -112
- package/dist/help.js +0 -1430
- package/dist/help.js.map +0 -1
- package/dist/kanban/assets.d.ts +0 -3
- package/dist/kanban/assets.js +0 -37
- package/dist/kanban/assets.js.map +0 -1
- package/dist/kanban/index.d.ts +0 -1
- package/dist/kanban/index.js +0 -2
- package/dist/kanban/index.js.map +0 -1
- package/dist/kanban/server.d.ts +0 -28
- package/dist/kanban/server.js +0 -118
- package/dist/kanban/server.js.map +0 -1
- package/dist/mcp-installer.d.ts +0 -32
- package/dist/mcp-installer.js +0 -118
- package/dist/mcp-installer.js.map +0 -1
- package/dist/mcp-server/index.d.ts +0 -11
- package/dist/mcp-server/index.js +0 -504
- package/dist/mcp-server/index.js.map +0 -1
- package/dist/mcp-server/index.test.d.ts +0 -1
- package/dist/mcp-server/index.test.js +0 -746
- package/dist/mcp-server/index.test.js.map +0 -1
- package/dist/mcp-server/mcp-tool-audit.d.ts +0 -6
- package/dist/mcp-server/mcp-tool-audit.js +0 -47
- package/dist/mcp-server/mcp-tool-audit.js.map +0 -1
- package/dist/mcp-server/stdio.d.ts +0 -2
- package/dist/mcp-server/stdio.js +0 -7
- package/dist/mcp-server/stdio.js.map +0 -1
- package/dist/mcp.d.ts +0 -2
- package/dist/mcp.js +0 -19
- package/dist/mcp.js.map +0 -1
- package/dist/open-storage-driver.d.ts +0 -55
- package/dist/open-storage-driver.js +0 -73
- package/dist/open-storage-driver.js.map +0 -1
- package/dist/open-synchronize-stores.d.ts +0 -24
- package/dist/open-synchronize-stores.js +0 -34
- package/dist/open-synchronize-stores.js.map +0 -1
- package/dist/project-identity.d.ts +0 -23
- package/dist/project-identity.js +0 -121
- package/dist/project-identity.js.map +0 -1
- package/dist/runtime-access-boundary.d.ts +0 -7
- package/dist/runtime-access-boundary.js +0 -182
- package/dist/runtime-access-boundary.js.map +0 -1
- package/dist/service-discovery.d.ts +0 -10
- package/dist/service-discovery.js +0 -64
- package/dist/service-discovery.js.map +0 -1
- package/dist/site/assets.d.ts +0 -4
- package/dist/site/assets.js +0 -46
- package/dist/site/assets.js.map +0 -1
- package/dist/site/cloud-events-relay.d.ts +0 -16
- package/dist/site/cloud-events-relay.js +0 -78
- package/dist/site/cloud-events-relay.js.map +0 -1
- package/dist/site/index.d.ts +0 -1
- package/dist/site/index.js +0 -2
- package/dist/site/index.js.map +0 -1
- package/dist/site/server.d.ts +0 -42
- package/dist/site/server.js +0 -632
- package/dist/site/server.js.map +0 -1
- package/dist/skill-installer.d.ts +0 -35
- package/dist/skill-installer.js +0 -180
- package/dist/skill-installer.js.map +0 -1
- package/dist/vitest-setup.d.ts +0 -1
- package/dist/vitest-setup.js +0 -7
- package/dist/vitest-setup.js.map +0 -1
package/dist/build-mode.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"build-mode.js","sourceRoot":"","sources":["../src/build-mode.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAiC,aAAa,CAAC"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { type SavedLoginStoreOptions, type RemoteSavedLogin } from "../../auth-session.js";
|
|
2
|
-
import { BaseCommand } from "../shared.js";
|
|
3
|
-
export type DeviceCodeLoginResult = {
|
|
4
|
-
tenantId: string;
|
|
5
|
-
userId: string;
|
|
6
|
-
displayName?: string;
|
|
7
|
-
accessToken: string;
|
|
8
|
-
expiresAt: string;
|
|
9
|
-
};
|
|
10
|
-
/** Reports the human-readable device-code instructions Entra returns (e.g. "go to microsoft.com/devicelogin and enter code ABCD-EFGH"). */
|
|
11
|
-
export type DeviceCodePrompt = (message: string) => void;
|
|
12
|
-
/**
|
|
13
|
-
* Runs the interactive Entra ID device-code exchange and resolves the
|
|
14
|
-
* identity + token it produced. The real implementation
|
|
15
|
-
* (`../../entra-device-login.js`) is the genuine HITL gap this repo cannot
|
|
16
|
-
* exercise: it requires a human to complete a device-code login in a
|
|
17
|
-
* browser against a real Azure tenant (ISS32's acceptance criteria).
|
|
18
|
-
*/
|
|
19
|
-
export type DeviceCodeLoginFn = (options: {
|
|
20
|
-
tenantId: string;
|
|
21
|
-
clientId: string;
|
|
22
|
-
onDeviceCode: DeviceCodePrompt;
|
|
23
|
-
}) => Promise<DeviceCodeLoginResult>;
|
|
24
|
-
export type RemoteLoginDependencies = {
|
|
25
|
-
deviceCodeLogin: DeviceCodeLoginFn;
|
|
26
|
-
fetch?: typeof globalThis.fetch;
|
|
27
|
-
onDeviceCode: DeviceCodePrompt;
|
|
28
|
-
storeOptions?: SavedLoginStoreOptions;
|
|
29
|
-
};
|
|
30
|
-
export declare function performRemoteLogin(input: {
|
|
31
|
-
name: string;
|
|
32
|
-
serviceUrl: string;
|
|
33
|
-
}, dependencies: RemoteLoginDependencies): Promise<RemoteSavedLogin>;
|
|
34
|
-
export declare class AuthLoginCommand extends BaseCommand {
|
|
35
|
-
static paths: string[][];
|
|
36
|
-
name: string | undefined;
|
|
37
|
-
serviceUrl: string | undefined;
|
|
38
|
-
execute(): Promise<number>;
|
|
39
|
-
private loginRemote;
|
|
40
|
-
private resolveRemoteInput;
|
|
41
|
-
private prompt;
|
|
42
|
-
}
|
|
43
|
-
export declare class AuthListCommand extends BaseCommand {
|
|
44
|
-
static paths: string[][];
|
|
45
|
-
execute(): Promise<number>;
|
|
46
|
-
}
|
|
47
|
-
export declare class AuthLogoutCommand extends BaseCommand {
|
|
48
|
-
static paths: string[][];
|
|
49
|
-
positionals: string[];
|
|
50
|
-
execute(): Promise<number>;
|
|
51
|
-
}
|
|
52
|
-
export declare class AuthStatusCommand extends BaseCommand {
|
|
53
|
-
static paths: string[][];
|
|
54
|
-
execute(): Promise<number>;
|
|
55
|
-
}
|
|
56
|
-
export declare class AuthSwitchCommand extends BaseCommand {
|
|
57
|
-
static paths: string[][];
|
|
58
|
-
positionals: string[];
|
|
59
|
-
execute(): Promise<number>;
|
|
60
|
-
private getNextSavedLoginName;
|
|
61
|
-
}
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
import { createInterface } from "node:readline/promises";
|
|
2
|
-
import { Option } from "clipanion";
|
|
3
|
-
import { getActiveSavedLogin, listSavedLogins, removeSavedLogin, saveSavedLogin, setActiveSavedLogin, toSavedLoginView } from "../../auth-session.js";
|
|
4
|
-
import { discoverServiceAuth } from "../../service-discovery.js";
|
|
5
|
-
import { renderAuthList, renderAuthLogin, renderAuthLogout, renderAuthStatus, renderAuthSwitch } from "../renderers.js";
|
|
6
|
-
import { BaseCommand } from "../shared.js";
|
|
7
|
-
export async function performRemoteLogin(input, dependencies) {
|
|
8
|
-
if (input.name === "local") {
|
|
9
|
-
throw new Error('Saved-login name "local" is reserved.');
|
|
10
|
-
}
|
|
11
|
-
const discovered = await discoverServiceAuth(input.serviceUrl, dependencies.fetch);
|
|
12
|
-
const result = await dependencies.deviceCodeLogin({
|
|
13
|
-
tenantId: discovered.auth.tenantId,
|
|
14
|
-
clientId: discovered.auth.clientId,
|
|
15
|
-
onDeviceCode: dependencies.onDeviceCode
|
|
16
|
-
});
|
|
17
|
-
const login = {
|
|
18
|
-
name: input.name,
|
|
19
|
-
kind: "remote",
|
|
20
|
-
serviceUrl: discovered.serviceUrl,
|
|
21
|
-
tenantId: result.tenantId,
|
|
22
|
-
userId: result.userId,
|
|
23
|
-
displayName: result.displayName,
|
|
24
|
-
accessToken: result.accessToken,
|
|
25
|
-
expiresAt: result.expiresAt
|
|
26
|
-
};
|
|
27
|
-
await saveSavedLogin(login, dependencies.storeOptions);
|
|
28
|
-
return login;
|
|
29
|
-
}
|
|
30
|
-
export class AuthLoginCommand extends BaseCommand {
|
|
31
|
-
static paths = [["auth", "login"]];
|
|
32
|
-
name = Option.String("--name");
|
|
33
|
-
serviceUrl = Option.String("--url");
|
|
34
|
-
async execute() {
|
|
35
|
-
const login = await this.loginRemote();
|
|
36
|
-
const view = toSavedLoginView(login);
|
|
37
|
-
this.print({ command: "auth-login", login: view }, renderAuthLogin(view));
|
|
38
|
-
return 0;
|
|
39
|
-
}
|
|
40
|
-
async loginRemote() {
|
|
41
|
-
const { name, serviceUrl } = await this.resolveRemoteInput();
|
|
42
|
-
const dependencies = this.context.authLoginDependencies;
|
|
43
|
-
const deviceCodeLogin = dependencies?.deviceCodeLogin
|
|
44
|
-
?? (await import("../../entra-device-login.js")).acquireEntraDeviceCodeSession;
|
|
45
|
-
return performRemoteLogin({ name, serviceUrl }, {
|
|
46
|
-
deviceCodeLogin,
|
|
47
|
-
fetch: dependencies?.fetch,
|
|
48
|
-
onDeviceCode: (message) => this.context.stdout.write(`${message}\n`),
|
|
49
|
-
storeOptions: this.context.credentialStoreOptions
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
async resolveRemoteInput() {
|
|
53
|
-
let name = this.name?.trim();
|
|
54
|
-
let serviceUrl = this.serviceUrl?.trim();
|
|
55
|
-
if (this.asJson) {
|
|
56
|
-
if (!name)
|
|
57
|
-
throw new Error("`auth login --json` requires --name <name>.");
|
|
58
|
-
if (!serviceUrl)
|
|
59
|
-
throw new Error("`auth login --json` requires --url <url>.");
|
|
60
|
-
return { name, serviceUrl };
|
|
61
|
-
}
|
|
62
|
-
const dependencies = this.context.authLoginDependencies;
|
|
63
|
-
const interactive = dependencies?.interactive ?? (process.stdin.isTTY === true && process.stdout.isTTY === true);
|
|
64
|
-
if ((!name || !serviceUrl) && !interactive) {
|
|
65
|
-
throw new Error("`auth login` requires --name <name> and --url <url> outside an interactive terminal.");
|
|
66
|
-
}
|
|
67
|
-
const prompt = dependencies?.prompt ?? ((question) => this.prompt(question));
|
|
68
|
-
name ||= (await prompt("Saved login name: ")).trim();
|
|
69
|
-
serviceUrl ||= (await prompt("Service URL: ")).trim();
|
|
70
|
-
if (!name)
|
|
71
|
-
throw new Error("Saved-login name cannot be empty.");
|
|
72
|
-
if (!serviceUrl)
|
|
73
|
-
throw new Error("Service URL cannot be empty.");
|
|
74
|
-
return { name, serviceUrl };
|
|
75
|
-
}
|
|
76
|
-
async prompt(question) {
|
|
77
|
-
const readline = createInterface({ input: process.stdin, output: this.context.stdout, terminal: true });
|
|
78
|
-
try {
|
|
79
|
-
return await readline.question(question);
|
|
80
|
-
}
|
|
81
|
-
finally {
|
|
82
|
-
readline.close();
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
export class AuthListCommand extends BaseCommand {
|
|
87
|
-
static paths = [["auth", "list"]];
|
|
88
|
-
async execute() {
|
|
89
|
-
const logins = await listSavedLogins(this.context.credentialStoreOptions);
|
|
90
|
-
const active = await getActiveSavedLogin(this.context.credentialStoreOptions);
|
|
91
|
-
const views = logins.map((login) => ({ login: toSavedLoginView(login), active: login.name === active.name }));
|
|
92
|
-
this.print({ command: "auth-list", logins: views }, renderAuthList(views));
|
|
93
|
-
return 0;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
export class AuthLogoutCommand extends BaseCommand {
|
|
97
|
-
static paths = [["auth", "logout"]];
|
|
98
|
-
positionals = Option.Rest();
|
|
99
|
-
async execute() {
|
|
100
|
-
const active = await getActiveSavedLogin(this.context.credentialStoreOptions);
|
|
101
|
-
const name = this.positionals[0] ?? active.name;
|
|
102
|
-
await removeSavedLogin(name, this.context.credentialStoreOptions);
|
|
103
|
-
this.print({ command: "auth-logout", name }, renderAuthLogout(name));
|
|
104
|
-
return 0;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
export class AuthStatusCommand extends BaseCommand {
|
|
108
|
-
static paths = [["auth", "status"]];
|
|
109
|
-
async execute() {
|
|
110
|
-
const login = await getActiveSavedLogin(this.context.credentialStoreOptions);
|
|
111
|
-
const view = toSavedLoginView(login);
|
|
112
|
-
this.print({ command: "auth-status", login: view }, renderAuthStatus(view));
|
|
113
|
-
return 0;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
export class AuthSwitchCommand extends BaseCommand {
|
|
117
|
-
static paths = [["auth", "switch"]];
|
|
118
|
-
positionals = Option.Rest();
|
|
119
|
-
async execute() {
|
|
120
|
-
const name = this.positionals[0] ?? (await this.getNextSavedLoginName());
|
|
121
|
-
await setActiveSavedLogin(name, this.context.credentialStoreOptions);
|
|
122
|
-
const login = await getActiveSavedLogin(this.context.credentialStoreOptions);
|
|
123
|
-
const view = toSavedLoginView(login);
|
|
124
|
-
this.print({ command: "auth-switch", login: view }, renderAuthSwitch(view));
|
|
125
|
-
return 0;
|
|
126
|
-
}
|
|
127
|
-
async getNextSavedLoginName() {
|
|
128
|
-
const logins = await listSavedLogins(this.context.credentialStoreOptions);
|
|
129
|
-
const active = await getActiveSavedLogin(this.context.credentialStoreOptions);
|
|
130
|
-
const activeIndex = logins.findIndex(({ name }) => name === active.name);
|
|
131
|
-
return logins[(activeIndex + 1) % logins.length].name;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
//# sourceMappingURL=auth.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/cli/commands/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { Option } from "clipanion";
|
|
2
|
-
import { backfillBodies, parseBackfillableBodyKinds } from "@agent-issues/core";
|
|
3
|
-
import { renderBackfillBodies } from "../renderers.js";
|
|
4
|
-
import { MutableTenantCommand, parseCsvOption, withStore } from "../shared.js";
|
|
5
|
-
export class BackfillBodiesCommand extends MutableTenantCommand {
|
|
6
|
-
static paths = [["backfill-bodies"]];
|
|
7
|
-
allTenants = Option.Boolean("--all-tenants", false);
|
|
8
|
-
dryRun = Option.Boolean("--dry-run", false);
|
|
9
|
-
kinds = Option.String("--kinds");
|
|
10
|
-
async execute() {
|
|
11
|
-
return withStore(this.dbPath, this.withStoreOptions(), async (store, dbPath) => {
|
|
12
|
-
const kinds = parseBackfillableBodyKinds(parseCsvOption(this.kinds));
|
|
13
|
-
const tenantIds = this.allTenants ? (await store.listTenants()).map((tenant) => tenant.id) : [store.tenantId];
|
|
14
|
-
const tenants = [];
|
|
15
|
-
for (const tenantId of tenantIds) {
|
|
16
|
-
if (tenantId === store.tenantId) {
|
|
17
|
-
tenants.push(await backfillBodies(store, { dryRun: this.dryRun, force: this.force, kinds }));
|
|
18
|
-
continue;
|
|
19
|
-
}
|
|
20
|
-
tenants.push(await withStore(this.dbPath, this.withStoreOptions({ tenant: tenantId }), (tenantStore) => backfillBodies(tenantStore, { dryRun: this.dryRun, force: this.force, kinds })));
|
|
21
|
-
}
|
|
22
|
-
const result = {
|
|
23
|
-
command: "backfill-bodies",
|
|
24
|
-
dbPath,
|
|
25
|
-
dryRun: this.dryRun,
|
|
26
|
-
force: this.force,
|
|
27
|
-
kinds,
|
|
28
|
-
scope: this.allTenants ? "all-tenants" : "current-tenant",
|
|
29
|
-
tenants
|
|
30
|
-
};
|
|
31
|
-
this.print(result, renderBackfillBodies(result));
|
|
32
|
-
return 0;
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=backfill.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"backfill.js","sourceRoot":"","sources":["../../../src/cli/commands/backfill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAEhF,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE/E,MAAM,OAAO,qBAAsB,SAAQ,oBAAoB;IACvD,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAErC,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACpD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC5C,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEjC,KAAK,CAAC,OAAO;QACnB,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC9E,MAAM,KAAK,GAAG,0BAA0B,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACrE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAE9G,MAAM,OAAO,GAAG,EAAE,CAAC;YACnB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBAClC,IAAI,QAAQ,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACjC,OAAO,CAAC,IAAI,CAAC,MAAM,cAAc,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;oBAC7F,SAAS;gBACV,CAAC;gBAED,OAAO,CAAC,IAAI,CACX,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CACzF,cAAc,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAC9E,CACD,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAG;gBACd,OAAO,EAAE,iBAA0B;gBACnC,MAAM;gBACN,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK;gBACL,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAE,aAAuB,CAAC,CAAC,CAAE,gBAA0B;gBAC/E,OAAO;aACP,CAAC;YAEF,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;YACjD,OAAO,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;IACJ,CAAC;CACD"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { BaseCommand, BodyTenantCommand, TenantCommand } from "../shared.js";
|
|
2
|
-
export declare class IssueCommentCommand extends BaseCommand {
|
|
3
|
-
static paths: string[][];
|
|
4
|
-
execute(): Promise<number>;
|
|
5
|
-
}
|
|
6
|
-
export declare class AddIssueCommentCommand extends BodyTenantCommand {
|
|
7
|
-
static paths: string[][];
|
|
8
|
-
positionals: string[];
|
|
9
|
-
references: string[] | undefined;
|
|
10
|
-
execute(): Promise<number>;
|
|
11
|
-
}
|
|
12
|
-
export declare class EditIssueCommentCommand extends BodyTenantCommand {
|
|
13
|
-
static paths: string[][];
|
|
14
|
-
positionals: string[];
|
|
15
|
-
references: string[] | undefined;
|
|
16
|
-
execute(): Promise<number>;
|
|
17
|
-
}
|
|
18
|
-
export declare class DeleteIssueCommentCommand extends TenantCommand {
|
|
19
|
-
static paths: string[][];
|
|
20
|
-
positionals: string[];
|
|
21
|
-
execute(): Promise<number>;
|
|
22
|
-
}
|
|
23
|
-
export declare class IssueCommentHistoryCommand extends TenantCommand {
|
|
24
|
-
static paths: string[][];
|
|
25
|
-
positionals: string[];
|
|
26
|
-
execute(): Promise<number>;
|
|
27
|
-
}
|
|
28
|
-
export declare class ListIssueCommentsCommand extends TenantCommand {
|
|
29
|
-
static paths: string[][];
|
|
30
|
-
all: boolean;
|
|
31
|
-
before: string | undefined;
|
|
32
|
-
positionals: string[];
|
|
33
|
-
execute(): Promise<number>;
|
|
34
|
-
}
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { Option } from "clipanion";
|
|
2
|
-
import { getHelpPayload, renderHelp } from "../../help.js";
|
|
3
|
-
import { BaseCommand, BodyTenantCommand, TenantCommand, requireOption, requirePositional, withStore } from "../shared.js";
|
|
4
|
-
export class IssueCommentCommand extends BaseCommand {
|
|
5
|
-
static paths = [["comment"]];
|
|
6
|
-
async execute() {
|
|
7
|
-
const payload = getHelpPayload("comment");
|
|
8
|
-
this.print(payload, renderHelp(payload));
|
|
9
|
-
return 0;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
export class AddIssueCommentCommand extends BodyTenantCommand {
|
|
13
|
-
static paths = [["comment", "add"]];
|
|
14
|
-
positionals = Option.Rest();
|
|
15
|
-
references = Option.Array("--reference");
|
|
16
|
-
async execute() {
|
|
17
|
-
return withStore(this.dbPath, this.withStoreOptions(), async (store) => {
|
|
18
|
-
const referencedIssueIds = await resolveReferencedIssueIds(store, this.references ?? []);
|
|
19
|
-
const comment = await store.createIssueComment({
|
|
20
|
-
issueId: requirePositional(this.positionals, 0, "comment add <issueId> --body-file <path|-> [--reference <issueId>]"),
|
|
21
|
-
body: requireOption(await this.resolveBody(), "--body-file is required for comment add."),
|
|
22
|
-
referencedIssueIds
|
|
23
|
-
});
|
|
24
|
-
this.print(comment, renderIssueComment(comment));
|
|
25
|
-
return 0;
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
export class EditIssueCommentCommand extends BodyTenantCommand {
|
|
30
|
-
static paths = [["comment", "edit"]];
|
|
31
|
-
positionals = Option.Rest();
|
|
32
|
-
references = Option.Array("--reference");
|
|
33
|
-
async execute() {
|
|
34
|
-
return withStore(this.dbPath, this.withStoreOptions(), async (store) => {
|
|
35
|
-
const issueId = requirePositional(this.positionals, 0, "comment edit <issueId> <commentId> --body-file <path|-> [--reference <issueId>]");
|
|
36
|
-
const commentId = requirePositional(this.positionals, 1, "comment edit <issueId> <commentId> --body-file <path|-> [--reference <issueId>]");
|
|
37
|
-
const comment = await getIssueComment(store, issueId, commentId);
|
|
38
|
-
const referencedIssueIds = this.references === undefined
|
|
39
|
-
? undefined
|
|
40
|
-
: await resolveReferencedIssueIds(store, this.references);
|
|
41
|
-
const updated = await store.updateIssueComment({
|
|
42
|
-
commentId,
|
|
43
|
-
body: requireOption(await this.resolveBody(), "--body-file is required for comment edit."),
|
|
44
|
-
referencedIssueIds,
|
|
45
|
-
expectedRevision: comment.revision,
|
|
46
|
-
expectedContentHash: comment.contentHash
|
|
47
|
-
});
|
|
48
|
-
this.print(updated, renderIssueComment(updated));
|
|
49
|
-
return 0;
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
export class DeleteIssueCommentCommand extends TenantCommand {
|
|
54
|
-
static paths = [["comment", "delete"]];
|
|
55
|
-
positionals = Option.Rest();
|
|
56
|
-
async execute() {
|
|
57
|
-
return withStore(this.dbPath, this.withStoreOptions(), async (store) => {
|
|
58
|
-
const issueId = requirePositional(this.positionals, 0, "comment delete <issueId> <commentId>");
|
|
59
|
-
const commentId = requirePositional(this.positionals, 1, "comment delete <issueId> <commentId>");
|
|
60
|
-
const comment = await getIssueComment(store, issueId, commentId);
|
|
61
|
-
const deleted = await store.deleteIssueComment({
|
|
62
|
-
commentId,
|
|
63
|
-
expectedRevision: comment.revision,
|
|
64
|
-
expectedContentHash: comment.contentHash
|
|
65
|
-
});
|
|
66
|
-
this.print(deleted, renderIssueComment(deleted));
|
|
67
|
-
return 0;
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
export class IssueCommentHistoryCommand extends TenantCommand {
|
|
72
|
-
static paths = [["comment", "history"]];
|
|
73
|
-
positionals = Option.Rest();
|
|
74
|
-
async execute() {
|
|
75
|
-
return withStore(this.dbPath, this.withStoreOptions(), async (store) => {
|
|
76
|
-
const history = await store.listIssueCommentHistory({
|
|
77
|
-
commentId: requirePositional(this.positionals, 0, "comment history <commentId>")
|
|
78
|
-
});
|
|
79
|
-
this.print(history, history.map(renderIssueCommentHistory).join("\n") || "No comment history found.");
|
|
80
|
-
return 0;
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
export class ListIssueCommentsCommand extends TenantCommand {
|
|
85
|
-
static paths = [["comment", "list"]];
|
|
86
|
-
all = Option.Boolean("--all", false);
|
|
87
|
-
before = Option.String("--before");
|
|
88
|
-
positionals = Option.Rest();
|
|
89
|
-
async execute() {
|
|
90
|
-
return withStore(this.dbPath, this.withStoreOptions(), async (store) => {
|
|
91
|
-
const page = await store.listIssueComments({
|
|
92
|
-
issueId: requirePositional(this.positionals, 0, "comment list <issueId> [--before <cursor>] [--all]"),
|
|
93
|
-
before: this.before,
|
|
94
|
-
all: this.all
|
|
95
|
-
});
|
|
96
|
-
this.print(page, page.comments.map(renderIssueComment).join("\n") || "No comments found.");
|
|
97
|
-
return 0;
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
function renderIssueComment(comment) {
|
|
102
|
-
if (comment.tombstone) {
|
|
103
|
-
return `${comment.reference} deleted ${comment.updatedAt}`;
|
|
104
|
-
}
|
|
105
|
-
return `${comment.reference} by ${comment.createdBy}\n${comment.body}`;
|
|
106
|
-
}
|
|
107
|
-
function renderIssueCommentHistory(entry) {
|
|
108
|
-
return `revision ${entry.targetRevision}/${entry.headRevision} by ${entry.author} ${entry.createdAt}${entry.tombstone ? " deleted" : ""}\n${entry.body}`;
|
|
109
|
-
}
|
|
110
|
-
async function getIssueComment(store, issueId, commentId) {
|
|
111
|
-
const issue = await store.getEntityDetails(issueId);
|
|
112
|
-
const comment = (await store.listIssueComments({ issueId: issue.entity.id, all: true })).comments
|
|
113
|
-
.find((candidate) => candidate.id === commentId || candidate.reference === commentId);
|
|
114
|
-
if (!comment) {
|
|
115
|
-
throw new Error(`Issue comment not found: ${commentId}`);
|
|
116
|
-
}
|
|
117
|
-
return comment;
|
|
118
|
-
}
|
|
119
|
-
async function resolveReferencedIssueIds(store, references) {
|
|
120
|
-
return await Promise.all(references.map(async (reference) => {
|
|
121
|
-
return (await store.getEntityDetails(reference)).entity.id;
|
|
122
|
-
}));
|
|
123
|
-
}
|
|
124
|
-
//# sourceMappingURL=comments.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"comments.js","sourceRoot":"","sources":["../../../src/cli/commands/comments.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { TenantCommand } from "../shared.js";
|
|
2
|
-
export declare class ContextCommand extends TenantCommand {
|
|
3
|
-
static paths: string[][];
|
|
4
|
-
avoid: string | undefined;
|
|
5
|
-
bodyFile: string | undefined;
|
|
6
|
-
positionals: string[];
|
|
7
|
-
query: string | undefined;
|
|
8
|
-
scope: string | undefined;
|
|
9
|
-
termsOnly: boolean;
|
|
10
|
-
title: string | undefined;
|
|
11
|
-
view: string | undefined;
|
|
12
|
-
execute(): Promise<number>;
|
|
13
|
-
}
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
import { Option } from "clipanion";
|
|
2
|
-
import { ContextTermConflictError } from "@agent-issues/core";
|
|
3
|
-
import { renderContextDetails, renderContextForgetResult, renderContextList, renderContextOutput, renderContextSearchTermsOnly, renderContextTermResult, toContextSearchTermsOnly } from "../../context-cli.js";
|
|
4
|
-
import { toCompactContextDefineAcknowledgement, toCompactContextForgetAcknowledgement, toCompactContextSetAcknowledgement } from "../../entity-projection.js";
|
|
5
|
-
import { CONTEXT_SUBCOMMANDS, TenantCommand, parseContextView, parseCsvOption, parseEntityView, requireOption, requirePositional, resolveMarkdownFileOption, withStore } from "../shared.js";
|
|
6
|
-
export class ContextCommand extends TenantCommand {
|
|
7
|
-
static paths = [["context"]];
|
|
8
|
-
avoid = Option.String("--avoid");
|
|
9
|
-
bodyFile = Option.String("--body-file");
|
|
10
|
-
positionals = Option.Rest();
|
|
11
|
-
query = Option.String("--query");
|
|
12
|
-
scope = Option.String("--scope");
|
|
13
|
-
termsOnly = Option.Boolean("--terms-only", false);
|
|
14
|
-
title = Option.String("--title");
|
|
15
|
-
view = Option.String("--view");
|
|
16
|
-
async execute() {
|
|
17
|
-
const firstPositional = this.positionals[0];
|
|
18
|
-
const subcommand = !firstPositional || CONTEXT_SUBCOMMANDS.has(firstPositional) ? firstPositional ?? "show" : "show";
|
|
19
|
-
const isMutation = subcommand === "set" || subcommand === "define" || subcommand === "forget";
|
|
20
|
-
if (!isMutation && (this.view === "compact" || this.view === "full")) {
|
|
21
|
-
throw new Error(`--view ${this.view} is only valid for context set, define, and forget.`);
|
|
22
|
-
}
|
|
23
|
-
const mutationView = isMutation
|
|
24
|
-
? parseEntityView(this.view)
|
|
25
|
-
: undefined;
|
|
26
|
-
const contextView = mutationView === undefined ? parseContextView(this.view) : "all";
|
|
27
|
-
return withStore(this.dbPath, this.withStoreOptions(), async (store) => {
|
|
28
|
-
const showScopeRef = subcommand === "show"
|
|
29
|
-
? this.scope ?? (firstPositional && !CONTEXT_SUBCOMMANDS.has(firstPositional) ? firstPositional : this.positionals[1])
|
|
30
|
-
: this.scope;
|
|
31
|
-
if (subcommand === "list") {
|
|
32
|
-
const result = await store.listContexts();
|
|
33
|
-
this.print(result, renderContextList(result));
|
|
34
|
-
return 0;
|
|
35
|
-
}
|
|
36
|
-
if (subcommand === "show") {
|
|
37
|
-
if (showScopeRef && (this.query || contextView !== "all")) {
|
|
38
|
-
throw new Error("`context show <scope>` does not support --query or --view. Use `context search` for filtered project-wide discovery.");
|
|
39
|
-
}
|
|
40
|
-
const context = showScopeRef
|
|
41
|
-
? await store.getContextDetails({ scopeRef: showScopeRef })
|
|
42
|
-
: await store.queryContextDirectory({ query: this.query, view: contextView });
|
|
43
|
-
this.print(context, renderContextOutput(context));
|
|
44
|
-
return 0;
|
|
45
|
-
}
|
|
46
|
-
if (subcommand === "search") {
|
|
47
|
-
const query = this.query ?? this.positionals[1];
|
|
48
|
-
if (!query) {
|
|
49
|
-
throw new Error("Missing argument. Usage: context search <query> [--view <all|global|initiatives>]");
|
|
50
|
-
}
|
|
51
|
-
const result = await store.queryContextDirectory({ query, view: contextView });
|
|
52
|
-
if (this.termsOnly) {
|
|
53
|
-
const compactResult = toContextSearchTermsOnly(result);
|
|
54
|
-
this.print(compactResult, renderContextSearchTermsOnly(compactResult));
|
|
55
|
-
return 0;
|
|
56
|
-
}
|
|
57
|
-
this.print(result, renderContextOutput(result));
|
|
58
|
-
return 0;
|
|
59
|
-
}
|
|
60
|
-
if (this.termsOnly) {
|
|
61
|
-
throw new Error("`--terms-only` is only supported for `context search`.");
|
|
62
|
-
}
|
|
63
|
-
if (subcommand === "conflicts") {
|
|
64
|
-
if (contextView === "global") {
|
|
65
|
-
throw new Error("`context conflicts` does not support --view global because shared-only context cannot conflict across scopes.");
|
|
66
|
-
}
|
|
67
|
-
const result = await store.queryContextDirectory({
|
|
68
|
-
conflictsOnly: true,
|
|
69
|
-
query: this.query ?? this.positionals[1],
|
|
70
|
-
view: contextView
|
|
71
|
-
});
|
|
72
|
-
this.print(result, renderContextOutput(result));
|
|
73
|
-
return 0;
|
|
74
|
-
}
|
|
75
|
-
if (subcommand === "set") {
|
|
76
|
-
const current = await store.getContextDetails({ scopeRef: this.scope });
|
|
77
|
-
const result = await store.upsertContext({
|
|
78
|
-
scopeRef: this.scope,
|
|
79
|
-
title: requireOption(this.title, "--title is required for context set."),
|
|
80
|
-
summary: requireOption(await resolveMarkdownFileOption(this.bodyFile, "--body-file"), "--body-file is required for context set."),
|
|
81
|
-
...(current.context.exists && {
|
|
82
|
-
expectedRevision: current.context.revision,
|
|
83
|
-
expectedContentHash: current.context.contentHash
|
|
84
|
-
})
|
|
85
|
-
});
|
|
86
|
-
const details = await store.getContextDetails({ scopeRef: this.scope });
|
|
87
|
-
this.print(this.asJson && mutationView === "compact" ? toCompactContextSetAcknowledgement(result) : details, renderContextDetails(details));
|
|
88
|
-
return 0;
|
|
89
|
-
}
|
|
90
|
-
if (subcommand === "define") {
|
|
91
|
-
const term = requirePositional(this.positionals, 1, "context define <term> --body-file <path|-> [--avoid <comma-separated terms>]");
|
|
92
|
-
const current = (await store.getContextDetails({ scopeRef: this.scope })).terms.find((candidate) => candidate.term === term);
|
|
93
|
-
const input = {
|
|
94
|
-
scopeRef: this.scope,
|
|
95
|
-
term,
|
|
96
|
-
definition: requireOption(await resolveMarkdownFileOption(this.bodyFile, "--body-file"), "--body-file is required for context define."),
|
|
97
|
-
avoid: parseCsvOption(this.avoid),
|
|
98
|
-
...(current && { expectedRevision: current.revision, expectedContentHash: current.contentHash })
|
|
99
|
-
};
|
|
100
|
-
let result;
|
|
101
|
-
try {
|
|
102
|
-
result = await store.defineContextTerm(input);
|
|
103
|
-
}
|
|
104
|
-
catch (error) {
|
|
105
|
-
if (!(error instanceof ContextTermConflictError) || current) {
|
|
106
|
-
throw error;
|
|
107
|
-
}
|
|
108
|
-
const activeAfterConflict = (await store.getContextDetails({ scopeRef: this.scope })).terms.some((candidate) => candidate.term === term);
|
|
109
|
-
if (activeAfterConflict) {
|
|
110
|
-
throw error;
|
|
111
|
-
}
|
|
112
|
-
result = await store.defineContextTerm({
|
|
113
|
-
...input,
|
|
114
|
-
expectedRevision: error.currentRevision,
|
|
115
|
-
expectedContentHash: error.currentContentHash
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
const details = await store.getContextDetails({ scopeRef: this.scope });
|
|
119
|
-
const storedTerm = details.terms.find((candidate) => candidate.id === result.term.id);
|
|
120
|
-
if (!storedTerm) {
|
|
121
|
-
throw new Error(`Context term not found after definition: ${result.term.id}`);
|
|
122
|
-
}
|
|
123
|
-
const fullResult = { context: details.context, term: storedTerm, created: result.created };
|
|
124
|
-
this.print(this.asJson && mutationView === "compact" ? toCompactContextDefineAcknowledgement(result) : fullResult, renderContextTermResult(fullResult));
|
|
125
|
-
return 0;
|
|
126
|
-
}
|
|
127
|
-
if (subcommand === "forget") {
|
|
128
|
-
const term = requirePositional(this.positionals, 1, "context forget <term>");
|
|
129
|
-
const current = (await store.getContextDetails({ scopeRef: this.scope })).terms.find((candidate) => candidate.term === term);
|
|
130
|
-
const input = {
|
|
131
|
-
scopeRef: this.scope,
|
|
132
|
-
term,
|
|
133
|
-
...(current && { expectedRevision: current.revision, expectedContentHash: current.contentHash })
|
|
134
|
-
};
|
|
135
|
-
let result;
|
|
136
|
-
try {
|
|
137
|
-
result = await store.forgetContextTerm(input);
|
|
138
|
-
}
|
|
139
|
-
catch (error) {
|
|
140
|
-
if (!(error instanceof ContextTermConflictError) || current) {
|
|
141
|
-
throw error;
|
|
142
|
-
}
|
|
143
|
-
result = await store.forgetContextTerm({
|
|
144
|
-
...input,
|
|
145
|
-
expectedRevision: error.currentRevision,
|
|
146
|
-
expectedContentHash: error.currentContentHash
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
this.print(this.asJson && mutationView === "compact" ? toCompactContextForgetAcknowledgement(result) : result, renderContextForgetResult(result));
|
|
150
|
-
return 0;
|
|
151
|
-
}
|
|
152
|
-
throw new Error(`Unknown context subcommand: ${subcommand}`);
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
//# sourceMappingURL=context.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/cli/commands/context.ts"],"names":[],"mappings":"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"}
|