agent-issues 0.0.119
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/.github/agents/agent-issues.agent.md +54 -0
- package/.github/agents/agent-issues.claude.md +51 -0
- package/dist/agent-installer.d.ts +49 -0
- package/dist/agent-installer.js +171 -0
- package/dist/agent-installer.js.map +1 -0
- package/dist/auth-session.d.ts +40 -0
- package/dist/auth-session.js +107 -0
- package/dist/auth-session.js.map +1 -0
- package/dist/body-backfill.d.ts +26 -0
- package/dist/body-backfill.js +219 -0
- package/dist/body-backfill.js.map +1 -0
- package/dist/build-mode.d.ts +1 -0
- package/dist/build-mode.js +1 -0
- package/dist/build-mode.js.map +1 -0
- package/dist/cli/commands/auth.d.ts +61 -0
- package/dist/cli/commands/auth.js +134 -0
- package/dist/cli/commands/auth.js.map +1 -0
- package/dist/cli/commands/backfill.d.ts +8 -0
- package/dist/cli/commands/backfill.js +36 -0
- package/dist/cli/commands/backfill.js.map +1 -0
- package/dist/cli/commands/comments.d.ts +34 -0
- package/dist/cli/commands/comments.js +124 -0
- package/dist/cli/commands/comments.js.map +1 -0
- package/dist/cli/commands/context.d.ts +13 -0
- package/dist/cli/commands/context.js +156 -0
- package/dist/cli/commands/context.js.map +1 -0
- package/dist/cli/commands/entities.d.ts +91 -0
- package/dist/cli/commands/entities.js +420 -0
- package/dist/cli/commands/entities.js.map +1 -0
- package/dist/cli/commands/export.d.ts +20 -0
- package/dist/cli/commands/export.js +98 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/commands/fallback.d.ts +6 -0
- package/dist/cli/commands/fallback.js +10 -0
- package/dist/cli/commands/fallback.js.map +1 -0
- package/dist/cli/commands/handoff.d.ts +1 -0
- package/dist/cli/commands/handoff.js +2 -0
- package/dist/cli/commands/handoff.js.map +1 -0
- package/dist/cli/commands/installers.d.ts +37 -0
- package/dist/cli/commands/installers.js +78 -0
- package/dist/cli/commands/installers.js.map +1 -0
- package/dist/cli/commands/kanban.d.ts +8 -0
- package/dist/cli/commands/kanban.js +83 -0
- package/dist/cli/commands/kanban.js.map +1 -0
- package/dist/cli/commands/meta.d.ts +14 -0
- package/dist/cli/commands/meta.js +33 -0
- package/dist/cli/commands/meta.js.map +1 -0
- package/dist/cli/commands/plan-entries.d.ts +30 -0
- package/dist/cli/commands/plan-entries.js +94 -0
- package/dist/cli/commands/plan-entries.js.map +1 -0
- package/dist/cli/commands/site.d.ts +29 -0
- package/dist/cli/commands/site.js +89 -0
- package/dist/cli/commands/site.js.map +1 -0
- package/dist/cli/commands/sql.d.ts +6 -0
- package/dist/cli/commands/sql.js +21 -0
- package/dist/cli/commands/sql.js.map +1 -0
- package/dist/cli/commands/synchronize.d.ts +12 -0
- package/dist/cli/commands/synchronize.js +31 -0
- package/dist/cli/commands/synchronize.js.map +1 -0
- package/dist/cli/commands/tenants.d.ts +29 -0
- package/dist/cli/commands/tenants.js +101 -0
- package/dist/cli/commands/tenants.js.map +1 -0
- package/dist/cli/index.d.ts +4 -0
- package/dist/cli/index.js +120 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/renderers.d.ts +250 -0
- package/dist/cli/renderers.js +286 -0
- package/dist/cli/renderers.js.map +1 -0
- package/dist/cli/shared.d.ts +97 -0
- package/dist/cli/shared.js +192 -0
- package/dist/cli/shared.js.map +1 -0
- package/dist/cli.d.ts +11 -0
- package/dist/cli.js +41 -0
- package/dist/cli.js.map +1 -0
- package/dist/context-cli.d.ts +16 -0
- package/dist/context-cli.js +131 -0
- package/dist/context-cli.js.map +1 -0
- package/dist/daemon/daemon-lifecycle.d.ts +1 -0
- package/dist/daemon/daemon-lifecycle.js +2 -0
- package/dist/daemon/daemon-lifecycle.js.map +1 -0
- package/dist/daemon/daemon-main.d.ts +14 -0
- package/dist/daemon/daemon-main.js +30 -0
- package/dist/daemon/daemon-main.js.map +1 -0
- package/dist/daemon/local-daemon-store.d.ts +21 -0
- package/dist/daemon/local-daemon-store.js +31 -0
- package/dist/daemon/local-daemon-store.js.map +1 -0
- package/dist/entity-projection.d.ts +141 -0
- package/dist/entity-projection.js +147 -0
- package/dist/entity-projection.js.map +1 -0
- package/dist/entra-device-login.d.ts +12 -0
- package/dist/entra-device-login.js +40 -0
- package/dist/entra-device-login.js.map +1 -0
- package/dist/export-files.d.ts +24 -0
- package/dist/export-files.js +230 -0
- package/dist/export-files.js.map +1 -0
- package/dist/export-markdown.d.ts +24 -0
- package/dist/export-markdown.js +343 -0
- package/dist/export-markdown.js.map +1 -0
- package/dist/help.d.ts +112 -0
- package/dist/help.js +1430 -0
- package/dist/help.js.map +1 -0
- package/dist/kanban/assets.d.ts +3 -0
- package/dist/kanban/assets.js +37 -0
- package/dist/kanban/assets.js.map +1 -0
- package/dist/kanban/index.d.ts +1 -0
- package/dist/kanban/index.js +2 -0
- package/dist/kanban/index.js.map +1 -0
- package/dist/kanban/server.d.ts +28 -0
- package/dist/kanban/server.js +118 -0
- package/dist/kanban/server.js.map +1 -0
- package/dist/mcp-installer.d.ts +32 -0
- package/dist/mcp-installer.js +118 -0
- package/dist/mcp-installer.js.map +1 -0
- package/dist/mcp-server/index.d.ts +11 -0
- package/dist/mcp-server/index.js +504 -0
- package/dist/mcp-server/index.js.map +1 -0
- package/dist/mcp-server/index.test.d.ts +1 -0
- package/dist/mcp-server/index.test.js +746 -0
- package/dist/mcp-server/index.test.js.map +1 -0
- package/dist/mcp-server/mcp-tool-audit.d.ts +6 -0
- package/dist/mcp-server/mcp-tool-audit.js +47 -0
- package/dist/mcp-server/mcp-tool-audit.js.map +1 -0
- package/dist/mcp-server/stdio.d.ts +2 -0
- package/dist/mcp-server/stdio.js +7 -0
- package/dist/mcp-server/stdio.js.map +1 -0
- package/dist/mcp.d.ts +2 -0
- package/dist/mcp.js +19 -0
- package/dist/mcp.js.map +1 -0
- package/dist/open-storage-driver.d.ts +53 -0
- package/dist/open-storage-driver.js +71 -0
- package/dist/open-storage-driver.js.map +1 -0
- package/dist/open-synchronize-stores.d.ts +24 -0
- package/dist/open-synchronize-stores.js +34 -0
- package/dist/open-synchronize-stores.js.map +1 -0
- package/dist/project-identity.d.ts +23 -0
- package/dist/project-identity.js +121 -0
- package/dist/project-identity.js.map +1 -0
- package/dist/runtime-access-boundary.d.ts +7 -0
- package/dist/runtime-access-boundary.js +182 -0
- package/dist/runtime-access-boundary.js.map +1 -0
- package/dist/service-discovery.d.ts +10 -0
- package/dist/service-discovery.js +64 -0
- package/dist/service-discovery.js.map +1 -0
- package/dist/site/assets.d.ts +4 -0
- package/dist/site/assets.js +46 -0
- package/dist/site/assets.js.map +1 -0
- package/dist/site/cloud-events-relay.d.ts +18 -0
- package/dist/site/cloud-events-relay.js +78 -0
- package/dist/site/cloud-events-relay.js.map +1 -0
- package/dist/site/index.d.ts +1 -0
- package/dist/site/index.js +2 -0
- package/dist/site/index.js.map +1 -0
- package/dist/site/server.d.ts +42 -0
- package/dist/site/server.js +320 -0
- package/dist/site/server.js.map +1 -0
- package/dist/skill-installer.d.ts +35 -0
- package/dist/skill-installer.js +174 -0
- package/dist/skill-installer.js.map +1 -0
- package/dist/vitest-setup.d.ts +1 -0
- package/dist/vitest-setup.js +7 -0
- package/dist/vitest-setup.js.map +1 -0
- package/package.json +42 -0
- package/site/dist/assets/index-DKEVC0aQ.css +1 -0
- package/site/dist/assets/index-DSR4mIml.js +4396 -0
- package/site/dist/index.html +14 -0
- package/skills/agent-issues-language.md +5 -0
- package/skills/agent-issues-operating-contract.md +208 -0
- package/skills/ai-agent-issues/SKILL.md +127 -0
- package/skills/ai-domain-modeling/ADR-FORMAT.md +48 -0
- package/skills/ai-domain-modeling/CONTEXT-FORMAT.md +54 -0
- package/skills/ai-domain-modeling/SKILL.md +45 -0
- package/skills/ai-grill-with-docs/SKILL.md +28 -0
- package/skills/ai-handoff/SKILL.md +41 -0
- package/skills/ai-implement/SKILL.md +98 -0
- package/skills/ai-migrate-docs/SKILL.md +65 -0
- package/skills/ai-next-work/SKILL.md +43 -0
- package/skills/ai-plan/SKILL.md +41 -0
- package/skills/ai-prepare/SKILL.md +79 -0
- package/skills/ai-prototype/LOGIC.md +67 -0
- package/skills/ai-prototype/SKILL.md +31 -0
- package/skills/ai-prototype/UI.md +112 -0
- package/skills/ai-recipe-migration/SKILL.md +49 -0
- package/skills/ai-start-work/SKILL.md +56 -0
- package/skills/ai-tdd/SKILL.md +99 -0
- package/skills/ai-tdd/deep-modules.md +33 -0
- package/skills/ai-tdd/interface-design.md +20 -0
- package/skills/ai-tdd/mocking.md +28 -0
- package/skills/ai-tdd/refactoring.md +10 -0
- package/skills/ai-tdd/tests.md +74 -0
- package/skills/ai-to-issues/SKILL.md +70 -0
- package/skills/ai-to-prd/SKILL.md +33 -0
- package/skills/ai-wayfinder/SKILL.md +110 -0
- package/skills/recipes/README.md +29 -0
- package/skills/recipes/adr.md +21 -0
- package/skills/recipes/context-summary.md +17 -0
- package/skills/recipes/context-term.md +3 -0
- package/skills/recipes/debt.md +21 -0
- package/skills/recipes/epic.md +21 -0
- package/skills/recipes/handoff.md +29 -0
- package/skills/recipes/initiative.md +21 -0
- package/skills/recipes/issue-comment.md +15 -0
- package/skills/recipes/issue.md +33 -0
- package/skills/recipes/prd.md +29 -0
- package/skills/recipes/project.md +21 -0
- package/skills/recipes/user-story.md +15 -0
- package/skills/recipes/version.md +13 -0
- package/skills/recipes/wayfinder-map.md +25 -0
- package/skills/recipes/wayfinder-ticket.md +17 -0
package/dist/cli.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { realpathSync } from "node:fs";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { main, runCli } from "./cli/index.js";
|
|
5
|
+
import { runDaemonProcess } from "./daemon/daemon-main.js";
|
|
6
|
+
import { LOCAL_DAEMON_SPAWN_FLAG } from "./daemon/local-daemon-store.js";
|
|
7
|
+
export { runCli };
|
|
8
|
+
export function isEntrypointInvocation(moduleUrl, argvPath) {
|
|
9
|
+
if (!argvPath) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
return resolveInvocationPath(fileURLToPath(moduleUrl)) === resolveInvocationPath(argvPath);
|
|
13
|
+
}
|
|
14
|
+
function resolveInvocationPath(filePath) {
|
|
15
|
+
try {
|
|
16
|
+
return realpathSync.native(filePath);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return filePath;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* A self-respawned local daemon process (ISS190) re-invokes this same entrypoint with a
|
|
24
|
+
* hidden flag as its first argument, instead of a normal command. Recognizing it here lets
|
|
25
|
+
* `spawnLocalDaemon()` in `@agent-issues/core` re-exec whichever script is currently running
|
|
26
|
+
* without needing any knowledge of the CLI's command-dispatch internals.
|
|
27
|
+
*/
|
|
28
|
+
export function shouldRunLocalDaemon(args) {
|
|
29
|
+
return args[0] === LOCAL_DAEMON_SPAWN_FLAG;
|
|
30
|
+
}
|
|
31
|
+
if (isEntrypointInvocation(import.meta.url, process.argv[1])) {
|
|
32
|
+
if (shouldRunLocalDaemon(process.argv.slice(2))) {
|
|
33
|
+
runDaemonProcess();
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
void main().then((exitCode) => {
|
|
37
|
+
process.exitCode = exitCode;
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,IAAI,EAAE,MAAM,EAA2B,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEzE,OAAO,EAAE,MAAM,EAA2B,CAAC;AAE3C,MAAM,UAAU,sBAAsB,CAAC,SAAiB,EAAE,QAA4B;IACrF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACd,CAAC;IAED,OAAO,qBAAqB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AAC5F,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAgB;IAC9C,IAAI,CAAC;QACJ,OAAO,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,QAAQ,CAAC;IACjB,CAAC;AACF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAc;IAClD,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,uBAAuB,CAAC;AAC5C,CAAC;AAED,IAAI,sBAAsB,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,IAAI,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,gBAAgB,EAAE,CAAC;IACpB,CAAC;SAAM,CAAC;QACP,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC7B,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC7B,CAAC,CAAC,CAAC;IACJ,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ContextDetails, ContextDirectoryTerm, ContextListResult, DefineContextTermResult, ForgetContextTermResult, QueryContextDirectoryResult } from "@agent-issues/api-local";
|
|
2
|
+
export type ContextSearchTermsOnlyResult = {
|
|
3
|
+
query: string;
|
|
4
|
+
view: QueryContextDirectoryResult["view"];
|
|
5
|
+
conflictsOnly: boolean;
|
|
6
|
+
duplicateTerms: string[];
|
|
7
|
+
terms: ContextDirectoryTerm[];
|
|
8
|
+
};
|
|
9
|
+
export declare function toContextSearchTermsOnly(result: QueryContextDirectoryResult): ContextSearchTermsOnlyResult;
|
|
10
|
+
export declare function renderContextDetails(details: ContextDetails): string;
|
|
11
|
+
export declare function renderContextDirectory(directory: QueryContextDirectoryResult): string;
|
|
12
|
+
export declare function renderContextSearchTermsOnly(result: ContextSearchTermsOnlyResult): string;
|
|
13
|
+
export declare function renderContextOutput(details: ContextDetails | QueryContextDirectoryResult): string;
|
|
14
|
+
export declare function renderContextList(result: ContextListResult): string;
|
|
15
|
+
export declare function renderContextTermResult(result: DefineContextTermResult): string;
|
|
16
|
+
export declare function renderContextForgetResult(result: ForgetContextTermResult): string;
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
export function toContextSearchTermsOnly(result) {
|
|
2
|
+
return {
|
|
3
|
+
query: result.query,
|
|
4
|
+
view: result.view,
|
|
5
|
+
conflictsOnly: result.conflictsOnly,
|
|
6
|
+
duplicateTerms: result.duplicateTerms,
|
|
7
|
+
terms: result.terms
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export function renderContextDetails(details) {
|
|
11
|
+
const lines = [
|
|
12
|
+
`${details.context.title} (${details.context.key})`,
|
|
13
|
+
`Scope: ${details.context.scopeKind} ${details.context.scopeEntityId ?? "default"} ${details.context.scopeLabel}`,
|
|
14
|
+
`Stored in database: ${details.context.exists ? "yes" : "not yet initialized"}`,
|
|
15
|
+
`Summary: ${details.context.summary}`,
|
|
16
|
+
`Updated: ${details.context.updatedAt ?? "never"}`,
|
|
17
|
+
"Terms:"
|
|
18
|
+
];
|
|
19
|
+
if (details.terms.length === 0) {
|
|
20
|
+
lines.push("none");
|
|
21
|
+
return lines.join("\n");
|
|
22
|
+
}
|
|
23
|
+
for (const term of details.terms) {
|
|
24
|
+
lines.push(`- ${term.term}: ${term.definition}`);
|
|
25
|
+
if (term.avoid.length > 0) {
|
|
26
|
+
lines.push(` Avoid: ${term.avoid.join(", ")}`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return lines.join("\n");
|
|
30
|
+
}
|
|
31
|
+
export function renderContextDirectory(directory) {
|
|
32
|
+
const sharedTitle = directory.shared?.context.title ?? "Project Context";
|
|
33
|
+
const sharedKey = directory.shared?.context.key ?? "default";
|
|
34
|
+
const lines = [
|
|
35
|
+
`${sharedTitle} (${sharedKey})`,
|
|
36
|
+
"Scope: project directory",
|
|
37
|
+
`View: ${directory.view}`,
|
|
38
|
+
`Query: ${directory.query.length > 0 ? directory.query : "none"}`,
|
|
39
|
+
`Conflicts only: ${directory.conflictsOnly ? "yes" : "no"}`,
|
|
40
|
+
`Shared context stored in database: ${directory.shared?.context.exists ? "yes" : "not matched or not initialized"}`,
|
|
41
|
+
`Shared summary: ${directory.shared?.context.summary && directory.shared.context.summary.length > 0 ? directory.shared.context.summary : "none"}`,
|
|
42
|
+
`Shared terms: ${directory.shared?.terms.length ?? 0}`,
|
|
43
|
+
`Initiative contexts: ${directory.initiatives.length}`,
|
|
44
|
+
`Discovered terms: ${directory.terms.length}`,
|
|
45
|
+
`Duplicate labels across scopes: ${directory.duplicateTerms.length}`
|
|
46
|
+
];
|
|
47
|
+
if (directory.view !== "global") {
|
|
48
|
+
lines.push("", "Initiative contexts:");
|
|
49
|
+
}
|
|
50
|
+
if (directory.view !== "global" && directory.initiatives.length === 0) {
|
|
51
|
+
lines.push("none");
|
|
52
|
+
}
|
|
53
|
+
else if (directory.view !== "global") {
|
|
54
|
+
for (const details of directory.initiatives) {
|
|
55
|
+
lines.push(`- ${details.context.scopeLabel} (${details.context.key}) ${details.context.exists ? "stored" : "implicit"} terms=${details.terms.length}`);
|
|
56
|
+
if (details.context.summary.length > 0) {
|
|
57
|
+
lines.push(` ${details.context.summary}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
lines.push("", "Discovered terms:");
|
|
62
|
+
if (directory.terms.length === 0) {
|
|
63
|
+
lines.push("none");
|
|
64
|
+
return lines.join("\n");
|
|
65
|
+
}
|
|
66
|
+
for (const entry of directory.terms) {
|
|
67
|
+
lines.push(...renderContextTermEntry(entry));
|
|
68
|
+
}
|
|
69
|
+
return lines.join("\n");
|
|
70
|
+
}
|
|
71
|
+
export function renderContextSearchTermsOnly(result) {
|
|
72
|
+
const lines = [
|
|
73
|
+
"Matching context terms",
|
|
74
|
+
`View: ${result.view}`,
|
|
75
|
+
`Query: ${result.query.length > 0 ? result.query : "none"}`,
|
|
76
|
+
`Conflicts only: ${result.conflictsOnly ? "yes" : "no"}`,
|
|
77
|
+
`Matches: ${result.terms.length}`,
|
|
78
|
+
`Duplicate labels across scopes: ${result.duplicateTerms.length}`,
|
|
79
|
+
"",
|
|
80
|
+
"Terms:"
|
|
81
|
+
];
|
|
82
|
+
if (result.terms.length === 0) {
|
|
83
|
+
lines.push("none");
|
|
84
|
+
return lines.join("\n");
|
|
85
|
+
}
|
|
86
|
+
for (const entry of result.terms) {
|
|
87
|
+
lines.push(...renderContextTermEntry(entry));
|
|
88
|
+
}
|
|
89
|
+
return lines.join("\n");
|
|
90
|
+
}
|
|
91
|
+
export function renderContextOutput(details) {
|
|
92
|
+
return "shared" in details ? renderContextDirectory(details) : renderContextDetails(details);
|
|
93
|
+
}
|
|
94
|
+
export function renderContextList(result) {
|
|
95
|
+
if (result.contexts.length === 0) {
|
|
96
|
+
return "No contexts found.";
|
|
97
|
+
}
|
|
98
|
+
return result.contexts
|
|
99
|
+
.map((item) => `${item.context.key} ${item.context.scopeKind} ${item.context.scopeEntityId ?? "default"} ${item.context.exists ? "stored" : "implicit"} terms=${item.termCount} ${item.context.scopeLabel}\n ${item.context.summary}`)
|
|
100
|
+
.join("\n");
|
|
101
|
+
}
|
|
102
|
+
export function renderContextTermResult(result) {
|
|
103
|
+
return [
|
|
104
|
+
`${result.created ? "Defined" : "Updated"} ${result.term.term} in ${result.context.title} (${result.context.key})`,
|
|
105
|
+
result.term.definition,
|
|
106
|
+
result.term.avoid.length > 0 ? `Avoid: ${result.term.avoid.join(", ")}` : "Avoid: none"
|
|
107
|
+
].join("\n");
|
|
108
|
+
}
|
|
109
|
+
export function renderContextForgetResult(result) {
|
|
110
|
+
return result.removed
|
|
111
|
+
? `Removed ${result.term} from ${result.context.title} (${result.context.key})`
|
|
112
|
+
: `Context term not found: ${result.term}`;
|
|
113
|
+
}
|
|
114
|
+
function renderContextTermEntry(entry) {
|
|
115
|
+
const warnings = [];
|
|
116
|
+
if (entry.hasDuplicates) {
|
|
117
|
+
warnings.push(`defined in ${entry.sources.length} scopes`);
|
|
118
|
+
}
|
|
119
|
+
if (entry.hasConflictingDefinitions) {
|
|
120
|
+
warnings.push("conflicting definitions");
|
|
121
|
+
}
|
|
122
|
+
const lines = [`- ${entry.term}${warnings.length > 0 ? ` [${warnings.join("; ")}]` : ""}`];
|
|
123
|
+
for (const source of entry.sources) {
|
|
124
|
+
lines.push(` - ${source.scopeLabel}: ${source.definition}`);
|
|
125
|
+
if (source.avoid.length > 0) {
|
|
126
|
+
lines.push(` Avoid: ${source.avoid.join(", ")}`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return lines;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=context-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-cli.js","sourceRoot":"","sources":["../src/context-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "@agent-issues/api-local";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-lifecycle.js","sourceRoot":"","sources":["../../src/daemon/daemon-lifecycle.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The real entrypoint a self-respawned daemon process runs (ISS190,
|
|
3
|
+
* ADR44): `spawnLocalDaemon` (`local-daemon-store.ts`) re-invokes this same
|
|
4
|
+
* installed CLI with a hidden flag, and `cli.ts` recognizes that flag and
|
|
5
|
+
* calls this instead of dispatching a normal command. `createLocalDaemonServer`
|
|
6
|
+
* itself lives in `@agent-issues/api-local` - the daemon server implementation,
|
|
7
|
+
* not the CLI's own concern. No `authProvider` override, so the daemon mints
|
|
8
|
+
* and persists its own token (ISS184); no explicit `buildHash`, so it reads
|
|
9
|
+
* its own `dist/build-info.json` (ISS188). The process stays alive because
|
|
10
|
+
* the daemon's own listening HTTP server keeps the event loop open - it only
|
|
11
|
+
* exits via the daemon's own idle-timeout or version/db-path-mismatch
|
|
12
|
+
* drain-then-exit.
|
|
13
|
+
*/
|
|
14
|
+
export declare function runDaemonProcess(): void;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { createLocalDaemonServer } from "@agent-issues/api-local";
|
|
2
|
+
/**
|
|
3
|
+
* Parses an optional `--db <path>` out of argv (appended by `spawnLocalDaemon`
|
|
4
|
+
* when a client requested a different db than the currently-running daemon
|
|
5
|
+
* serves, ISS190) so a respawned daemon opens the newly-requested db from its
|
|
6
|
+
* very first request instead of the default.
|
|
7
|
+
*/
|
|
8
|
+
function parseDbPathArg(argv) {
|
|
9
|
+
const flagIndex = argv.indexOf("--db");
|
|
10
|
+
if (flagIndex === -1)
|
|
11
|
+
return undefined;
|
|
12
|
+
return argv[flagIndex + 1];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The real entrypoint a self-respawned daemon process runs (ISS190,
|
|
16
|
+
* ADR44): `spawnLocalDaemon` (`local-daemon-store.ts`) re-invokes this same
|
|
17
|
+
* installed CLI with a hidden flag, and `cli.ts` recognizes that flag and
|
|
18
|
+
* calls this instead of dispatching a normal command. `createLocalDaemonServer`
|
|
19
|
+
* itself lives in `@agent-issues/api-local` - the daemon server implementation,
|
|
20
|
+
* not the CLI's own concern. No `authProvider` override, so the daemon mints
|
|
21
|
+
* and persists its own token (ISS184); no explicit `buildHash`, so it reads
|
|
22
|
+
* its own `dist/build-info.json` (ISS188). The process stays alive because
|
|
23
|
+
* the daemon's own listening HTTP server keeps the event loop open - it only
|
|
24
|
+
* exits via the daemon's own idle-timeout or version/db-path-mismatch
|
|
25
|
+
* drain-then-exit.
|
|
26
|
+
*/
|
|
27
|
+
export function runDaemonProcess() {
|
|
28
|
+
createLocalDaemonServer({ dbPath: parseDbPathArg(process.argv) });
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=daemon-main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-main.js","sourceRoot":"","sources":["../../src/daemon/daemon-main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE;;;;;GAKG;AACH,SAAS,cAAc,CAAC,IAAc;IACrC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,SAAS,KAAK,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACvC,OAAO,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB;IAC/B,uBAAuB,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hidden argv flag a self-respawned daemon process recognizes (ISS190): the
|
|
3
|
+
* runs the daemon instead of a normal command. Exported so core and the CLI
|
|
4
|
+
* entrypoint agree on the exact same literal without either hardcoding it
|
|
5
|
+
* independently.
|
|
6
|
+
*/
|
|
7
|
+
export declare const LOCAL_DAEMON_SPAWN_FLAG = "--agent-issues-run-daemon";
|
|
8
|
+
/**
|
|
9
|
+
* Default `spawn` for the local daemon (ISS190, ADR44): re-invokes this
|
|
10
|
+
* exact running script (`process.argv[1]`) as a detached, unref'd child
|
|
11
|
+
* with the hidden daemon flag appended. Core has no knowledge of which
|
|
12
|
+
* package's entrypoint is actually running - it doesn't need to, since
|
|
13
|
+
* "this same install, running itself again in daemon mode" always resolves
|
|
14
|
+
* correctly regardless of which CLI/site-server process happened to invoke
|
|
15
|
+
* it. When `dbPath` is supplied (a client requesting a different `--db`
|
|
16
|
+
* than the currently-running daemon serves), it's appended so the freshly
|
|
17
|
+
* spawned daemon opens that db instead of the default.
|
|
18
|
+
*/
|
|
19
|
+
export declare function spawnLocalDaemon(options?: {
|
|
20
|
+
dbPath?: string;
|
|
21
|
+
}): void;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { spawn as spawnChildProcess } from "node:child_process";
|
|
2
|
+
/**
|
|
3
|
+
* Hidden argv flag a self-respawned daemon process recognizes (ISS190): the
|
|
4
|
+
* runs the daemon instead of a normal command. Exported so core and the CLI
|
|
5
|
+
* entrypoint agree on the exact same literal without either hardcoding it
|
|
6
|
+
* independently.
|
|
7
|
+
*/
|
|
8
|
+
export const LOCAL_DAEMON_SPAWN_FLAG = "--agent-issues-run-daemon";
|
|
9
|
+
/**
|
|
10
|
+
* Default `spawn` for the local daemon (ISS190, ADR44): re-invokes this
|
|
11
|
+
* exact running script (`process.argv[1]`) as a detached, unref'd child
|
|
12
|
+
* with the hidden daemon flag appended. Core has no knowledge of which
|
|
13
|
+
* package's entrypoint is actually running - it doesn't need to, since
|
|
14
|
+
* "this same install, running itself again in daemon mode" always resolves
|
|
15
|
+
* correctly regardless of which CLI/site-server process happened to invoke
|
|
16
|
+
* it. When `dbPath` is supplied (a client requesting a different `--db`
|
|
17
|
+
* than the currently-running daemon serves), it's appended so the freshly
|
|
18
|
+
* spawned daemon opens that db instead of the default.
|
|
19
|
+
*/
|
|
20
|
+
export function spawnLocalDaemon(options) {
|
|
21
|
+
const entrypoint = process.argv[1];
|
|
22
|
+
if (!entrypoint) {
|
|
23
|
+
throw new Error("Cannot spawn the local daemon: no process entrypoint (process.argv[1]) is available.");
|
|
24
|
+
}
|
|
25
|
+
const args = [entrypoint, LOCAL_DAEMON_SPAWN_FLAG];
|
|
26
|
+
if (options?.dbPath !== undefined) {
|
|
27
|
+
args.push("--db", options.dbPath);
|
|
28
|
+
}
|
|
29
|
+
spawnChildProcess(process.execPath, args, { detached: true, stdio: "ignore" }).unref();
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=local-daemon-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-daemon-store.js","sourceRoot":"","sources":["../../src/daemon/local-daemon-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,2BAA2B,CAAC;AAEnE;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAA6B;IAC7D,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC;IACzG,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;IACnD,IAAI,OAAO,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,iBAAiB,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AACxF,CAAC"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import type { DeleteResult, EntityDetails, EntityKind, EntityRecord, EntityRelations, EntitySummary, LinkResult, MaterializedContextRevision, MaterializedContextTermRevision, MaterializedEntityRevision, MoveResult, QueryEntityParentGroup, RelationType, StatusUpdateResult, ContextWriteResult, DefineContextTermAcknowledgement, ForgetContextTermResult, UnlinkResult } from "@agent-issues/core";
|
|
2
|
+
export type CompactEntity = {
|
|
3
|
+
id: string;
|
|
4
|
+
reference: string;
|
|
5
|
+
kind: EntityKind;
|
|
6
|
+
status: string;
|
|
7
|
+
title: string;
|
|
8
|
+
};
|
|
9
|
+
export type CompactRelation = {
|
|
10
|
+
type: RelationType;
|
|
11
|
+
entity: CompactEntity;
|
|
12
|
+
};
|
|
13
|
+
export type CompactEntityDetails = {
|
|
14
|
+
entity: CompactEntity;
|
|
15
|
+
incoming: CompactRelation[];
|
|
16
|
+
outgoing: CompactRelation[];
|
|
17
|
+
planEntries: EntityDetails["planEntries"];
|
|
18
|
+
};
|
|
19
|
+
export type CompactEntityList = {
|
|
20
|
+
items: CompactEntity[];
|
|
21
|
+
total: number;
|
|
22
|
+
parentGroups?: Array<{
|
|
23
|
+
parent: CompactEntity;
|
|
24
|
+
items: CompactEntity[];
|
|
25
|
+
}>;
|
|
26
|
+
/** Only present for issue lists; see `QueryEntitiesResult.openBlockers`. */
|
|
27
|
+
openBlockers?: Record<string, string[]>;
|
|
28
|
+
};
|
|
29
|
+
export type CompactNextWorkItem = {
|
|
30
|
+
issue: CompactEntity;
|
|
31
|
+
blockers: string[];
|
|
32
|
+
unblocks: string[];
|
|
33
|
+
};
|
|
34
|
+
export type CompactNextWork = {
|
|
35
|
+
initiative: CompactEntity;
|
|
36
|
+
available: CompactNextWorkItem[];
|
|
37
|
+
blocked: CompactNextWorkItem[];
|
|
38
|
+
};
|
|
39
|
+
export type CompactCreateAcknowledgement = {
|
|
40
|
+
operation: "create";
|
|
41
|
+
id: string;
|
|
42
|
+
reference: string;
|
|
43
|
+
status: string;
|
|
44
|
+
revision: number;
|
|
45
|
+
};
|
|
46
|
+
export type CompactEditAcknowledgement = {
|
|
47
|
+
operation: "edit";
|
|
48
|
+
reference: string;
|
|
49
|
+
revision: number;
|
|
50
|
+
};
|
|
51
|
+
export declare function toCompactEntity(entity: EntitySummary): CompactEntity;
|
|
52
|
+
export declare function toCompactCreateAcknowledgement(entity: EntitySummary): CompactCreateAcknowledgement;
|
|
53
|
+
export declare function toCompactEditAcknowledgement(entity: EntityRecord): CompactEditAcknowledgement;
|
|
54
|
+
export declare function toCompactStatusAcknowledgement(operation: "archive" | "status", result: StatusUpdateResult): {
|
|
55
|
+
operation: "archive" | "status";
|
|
56
|
+
reference: string;
|
|
57
|
+
previousStatus: string;
|
|
58
|
+
status: string;
|
|
59
|
+
revision: number;
|
|
60
|
+
};
|
|
61
|
+
export declare function toCompactDeleteAcknowledgement(result: DeleteResult): {
|
|
62
|
+
operation: "delete";
|
|
63
|
+
reference: string;
|
|
64
|
+
removed: boolean;
|
|
65
|
+
};
|
|
66
|
+
export declare function toCompactMoveAcknowledgement(result: MoveResult): {
|
|
67
|
+
operation: "move";
|
|
68
|
+
reference: string;
|
|
69
|
+
previousParentId: string | null;
|
|
70
|
+
newParentId: string;
|
|
71
|
+
type: "blocks" | "constrains" | "contains" | "creates" | "decomposes" | "fixes" | "handsOff" | "informs" | "owns" | "records" | "relatesTo" | "resolves" | "supersedes" | "taggedWith" | "tracks";
|
|
72
|
+
revision: number;
|
|
73
|
+
};
|
|
74
|
+
export declare function toCompactLinkAcknowledgement(operation: "link" | "unlink", result: LinkResult | UnlinkResult): {
|
|
75
|
+
operation: "link" | "unlink";
|
|
76
|
+
fromId: string;
|
|
77
|
+
toId: string;
|
|
78
|
+
type: "blocks" | "constrains" | "contains" | "creates" | "decomposes" | "fixes" | "handsOff" | "informs" | "owns" | "records" | "relatesTo" | "resolves" | "supersedes" | "taggedWith" | "tracks";
|
|
79
|
+
created: boolean;
|
|
80
|
+
} | {
|
|
81
|
+
operation: "link" | "unlink";
|
|
82
|
+
fromId: string;
|
|
83
|
+
toId: string;
|
|
84
|
+
type: "blocks" | "constrains" | "contains" | "creates" | "decomposes" | "fixes" | "handsOff" | "informs" | "owns" | "records" | "relatesTo" | "resolves" | "supersedes" | "taggedWith" | "tracks";
|
|
85
|
+
removed: boolean;
|
|
86
|
+
};
|
|
87
|
+
export declare function toCompactEntityRestoreAcknowledgement(result: MaterializedEntityRevision): {
|
|
88
|
+
operation: "restore";
|
|
89
|
+
id: string;
|
|
90
|
+
revision: number;
|
|
91
|
+
restoredFromRevision: number | null;
|
|
92
|
+
};
|
|
93
|
+
export declare function toCompactContextSetAcknowledgement(result: ContextWriteResult): {
|
|
94
|
+
operation: "context-set";
|
|
95
|
+
reference: string;
|
|
96
|
+
revision: number;
|
|
97
|
+
};
|
|
98
|
+
export declare function toCompactContextDefineAcknowledgement(result: DefineContextTermAcknowledgement): {
|
|
99
|
+
operation: "context-define";
|
|
100
|
+
reference: string;
|
|
101
|
+
contextReference: string;
|
|
102
|
+
term: string;
|
|
103
|
+
created: boolean;
|
|
104
|
+
revision: number;
|
|
105
|
+
};
|
|
106
|
+
export declare function toCompactContextForgetAcknowledgement(result: ForgetContextTermResult): {
|
|
107
|
+
operation: "context-forget";
|
|
108
|
+
reference: string;
|
|
109
|
+
term: string;
|
|
110
|
+
removed: boolean;
|
|
111
|
+
revision?: number | undefined;
|
|
112
|
+
};
|
|
113
|
+
export declare function toCompactContextRestoreAcknowledgement(result: MaterializedContextRevision): {
|
|
114
|
+
operation: "context-restore";
|
|
115
|
+
contextKey: string;
|
|
116
|
+
revision: number;
|
|
117
|
+
restoredFromRevision: number | null;
|
|
118
|
+
};
|
|
119
|
+
export declare function toCompactContextTermRestoreAcknowledgement(result: MaterializedContextTermRevision): {
|
|
120
|
+
operation: "context-term-restore";
|
|
121
|
+
id: string;
|
|
122
|
+
contextKey: string;
|
|
123
|
+
term: string;
|
|
124
|
+
revision: number;
|
|
125
|
+
restoredFromRevision: number | null;
|
|
126
|
+
};
|
|
127
|
+
export declare function toCompactEntityDetails(details: EntityDetails | EntityRelations): CompactEntityDetails;
|
|
128
|
+
export declare function toCompactEntityList(entities: EntitySummary[], total?: number, openBlockers?: Record<string, string[]>, parentGroups?: QueryEntityParentGroup[]): CompactEntityList;
|
|
129
|
+
export declare function toCompactNextWork(result: {
|
|
130
|
+
initiative: EntityRecord;
|
|
131
|
+
available: Array<{
|
|
132
|
+
issue: EntityRecord;
|
|
133
|
+
blockers: string[];
|
|
134
|
+
unblocks: string[];
|
|
135
|
+
}>;
|
|
136
|
+
blocked: Array<{
|
|
137
|
+
issue: EntityRecord;
|
|
138
|
+
blockers: string[];
|
|
139
|
+
unblocks: string[];
|
|
140
|
+
}>;
|
|
141
|
+
}): CompactNextWork;
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
export function toCompactEntity(entity) {
|
|
2
|
+
return {
|
|
3
|
+
id: entity.id,
|
|
4
|
+
reference: entity.reference,
|
|
5
|
+
kind: entity.kind,
|
|
6
|
+
status: entity.status,
|
|
7
|
+
title: entity.title
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export function toCompactCreateAcknowledgement(entity) {
|
|
11
|
+
return {
|
|
12
|
+
operation: "create",
|
|
13
|
+
id: entity.id,
|
|
14
|
+
reference: entity.reference,
|
|
15
|
+
status: entity.status,
|
|
16
|
+
revision: entity.revision
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function toCompactEditAcknowledgement(entity) {
|
|
20
|
+
return {
|
|
21
|
+
operation: "edit",
|
|
22
|
+
reference: entity.reference,
|
|
23
|
+
revision: entity.revision
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export function toCompactStatusAcknowledgement(operation, result) {
|
|
27
|
+
return {
|
|
28
|
+
operation,
|
|
29
|
+
reference: result.entity.reference,
|
|
30
|
+
previousStatus: result.previousStatus,
|
|
31
|
+
status: result.entity.status,
|
|
32
|
+
revision: result.entity.revision
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export function toCompactDeleteAcknowledgement(result) {
|
|
36
|
+
return {
|
|
37
|
+
operation: "delete",
|
|
38
|
+
reference: result.entity.reference,
|
|
39
|
+
removed: result.removed
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export function toCompactMoveAcknowledgement(result) {
|
|
43
|
+
return {
|
|
44
|
+
operation: "move",
|
|
45
|
+
reference: result.entity.reference,
|
|
46
|
+
previousParentId: result.previousParentId,
|
|
47
|
+
newParentId: result.newParentId,
|
|
48
|
+
type: result.relationType,
|
|
49
|
+
revision: result.entity.revision
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export function toCompactLinkAcknowledgement(operation, result) {
|
|
53
|
+
return {
|
|
54
|
+
operation,
|
|
55
|
+
fromId: result.relation.fromId,
|
|
56
|
+
toId: result.relation.toId,
|
|
57
|
+
type: result.relation.type,
|
|
58
|
+
...(operation === "link" ? { created: result.created } : { removed: result.removed })
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export function toCompactEntityRestoreAcknowledgement(result) {
|
|
62
|
+
return {
|
|
63
|
+
operation: "restore",
|
|
64
|
+
id: result.entityId,
|
|
65
|
+
revision: result.headRevision,
|
|
66
|
+
restoredFromRevision: result.restoredFromRevision
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
export function toCompactContextSetAcknowledgement(result) {
|
|
70
|
+
return {
|
|
71
|
+
operation: "context-set",
|
|
72
|
+
reference: result.context.reference ?? result.context.key,
|
|
73
|
+
revision: result.context.revision
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
export function toCompactContextDefineAcknowledgement(result) {
|
|
77
|
+
return {
|
|
78
|
+
operation: "context-define",
|
|
79
|
+
reference: result.term.reference,
|
|
80
|
+
contextReference: result.context.reference ?? result.context.key,
|
|
81
|
+
term: result.term.term,
|
|
82
|
+
created: result.created,
|
|
83
|
+
revision: result.term.revision
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
export function toCompactContextForgetAcknowledgement(result) {
|
|
87
|
+
return {
|
|
88
|
+
operation: "context-forget",
|
|
89
|
+
reference: result.context.reference ?? result.context.key,
|
|
90
|
+
term: result.term,
|
|
91
|
+
removed: result.removed,
|
|
92
|
+
...(result.currentRevision === undefined ? {} : { revision: result.currentRevision })
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
export function toCompactContextRestoreAcknowledgement(result) {
|
|
96
|
+
return {
|
|
97
|
+
operation: "context-restore",
|
|
98
|
+
contextKey: result.contextKey,
|
|
99
|
+
revision: result.headRevision,
|
|
100
|
+
restoredFromRevision: result.restoredFromRevision
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
export function toCompactContextTermRestoreAcknowledgement(result) {
|
|
104
|
+
return {
|
|
105
|
+
operation: "context-term-restore",
|
|
106
|
+
id: result.id,
|
|
107
|
+
contextKey: result.contextKey,
|
|
108
|
+
term: result.term,
|
|
109
|
+
revision: result.headRevision,
|
|
110
|
+
restoredFromRevision: result.restoredFromRevision
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
export function toCompactEntityDetails(details) {
|
|
114
|
+
return {
|
|
115
|
+
entity: toCompactEntity(details.entity),
|
|
116
|
+
incoming: details.incoming.map(({ relationType, entity }) => ({
|
|
117
|
+
type: relationType,
|
|
118
|
+
entity: toCompactEntity(entity)
|
|
119
|
+
})),
|
|
120
|
+
outgoing: details.outgoing.map(({ relationType, entity }) => ({
|
|
121
|
+
type: relationType,
|
|
122
|
+
entity: toCompactEntity(entity)
|
|
123
|
+
})),
|
|
124
|
+
planEntries: details.planEntries ?? []
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
export function toCompactEntityList(entities, total = entities.length, openBlockers, parentGroups) {
|
|
128
|
+
return {
|
|
129
|
+
items: entities.map(toCompactEntity),
|
|
130
|
+
total,
|
|
131
|
+
...(parentGroups ? { parentGroups: parentGroups.map((group) => ({ parent: toCompactEntity(group.parent), items: group.entities.map(toCompactEntity) })) } : {}),
|
|
132
|
+
...(openBlockers ? { openBlockers } : {})
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
export function toCompactNextWork(result) {
|
|
136
|
+
const toCompactNextWorkItem = (item) => ({
|
|
137
|
+
issue: toCompactEntity(item.issue),
|
|
138
|
+
blockers: item.blockers,
|
|
139
|
+
unblocks: item.unblocks
|
|
140
|
+
});
|
|
141
|
+
return {
|
|
142
|
+
initiative: toCompactEntity(result.initiative),
|
|
143
|
+
available: result.available.map(toCompactNextWorkItem),
|
|
144
|
+
blocked: result.blocked.map(toCompactNextWorkItem)
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=entity-projection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-projection.js","sourceRoot":"","sources":["../src/entity-projection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { DeviceCodeLoginFn } from "./cli/commands/auth.js";
|
|
2
|
+
/**
|
|
3
|
+
* Real Entra ID device-code login (ADR12's client-side leg). This is the
|
|
4
|
+
* genuine HITL boundary for ISS32: it requires a human to open the printed
|
|
5
|
+
* verification URL in a browser and enter the device code against a real
|
|
6
|
+
* Azure app registration. Not unit-tested for that reason - see
|
|
7
|
+
* docs/auth-entra-id-setup.md for how to obtain the tenant/client IDs this
|
|
8
|
+
* needs, and `agent-issues auth login --help` for usage. Remote-login tests
|
|
9
|
+
* cover everything downstream of this exchange with a fake implementation
|
|
10
|
+
* of `DeviceCodeLoginFn`.
|
|
11
|
+
*/
|
|
12
|
+
export declare const acquireEntraDeviceCodeSession: DeviceCodeLoginFn;
|