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
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
import { readdirSync, readFileSync } from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { parse } from "@babel/parser";
|
|
4
|
-
const allowedMethodInfrastructure = new Set([
|
|
5
|
-
"api-pg/src/db/connection.ts",
|
|
6
|
-
"api-pg/src/db/migration-runner.ts",
|
|
7
|
-
"api-pg/src/db/source-profile.ts",
|
|
8
|
-
"api-pg/src/db/tenant-admin.ts",
|
|
9
|
-
"api-pg/src/db/test-tenant-cleanup.ts"
|
|
10
|
-
]);
|
|
11
|
-
const SQLITE_ADAPTER_MODULE = "api-local/src/db/sqlite-connection.ts";
|
|
12
|
-
const SQLITE_RAW_METHODS = new Set(["prepare", "exec", "transaction", "pragma", "all", "get", "run"]);
|
|
13
|
-
const SQLITE_ESCAPE_HATCH_PROPERTIES = new Set(["db", "identityToken"]);
|
|
14
|
-
const SQLITE_DRIVER_OBJECT_NAMES = new Set(["db", "database", "connection", "executor", "sqlite"]);
|
|
15
|
-
function isAllowedMethodInfrastructure(file) {
|
|
16
|
-
return allowedMethodInfrastructure.has(file) || file.startsWith("api-local/src/migrations/") || file.startsWith("api-pg/src/migrations/");
|
|
17
|
-
}
|
|
18
|
-
function visitAst(value, visit) {
|
|
19
|
-
if (Array.isArray(value)) {
|
|
20
|
-
for (const item of value) {
|
|
21
|
-
visitAst(item, visit);
|
|
22
|
-
}
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
if (!value || typeof value !== "object") {
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
const node = value;
|
|
29
|
-
if (typeof node.type === "string") {
|
|
30
|
-
visit(node);
|
|
31
|
-
}
|
|
32
|
-
for (const [key, child] of Object.entries(node)) {
|
|
33
|
-
if (key !== "loc" && key !== "start" && key !== "end") {
|
|
34
|
-
visitAst(child, visit);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
function listTypeScriptFiles(root) {
|
|
39
|
-
const files = [];
|
|
40
|
-
for (const entry of readdirSync(root, { withFileTypes: true })) {
|
|
41
|
-
const entryPath = path.join(root, entry.name);
|
|
42
|
-
if (entry.isDirectory()) {
|
|
43
|
-
files.push(...listTypeScriptFiles(entryPath));
|
|
44
|
-
}
|
|
45
|
-
else if (entry.name.endsWith(".ts") && !entry.name.endsWith(".test.ts")) {
|
|
46
|
-
files.push(entryPath);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return files;
|
|
50
|
-
}
|
|
51
|
-
export function findRuntimeAccessBoundaryViolations(root) {
|
|
52
|
-
const violations = [];
|
|
53
|
-
for (const filePath of listTypeScriptFiles(root)) {
|
|
54
|
-
const relativeFile = path.relative(root, filePath).split(path.sep).join("/").replace(/^packages\//, "");
|
|
55
|
-
if (!relativeFile.startsWith("api-pg/src/") && !relativeFile.startsWith("api-local/src/")) {
|
|
56
|
-
continue;
|
|
57
|
-
}
|
|
58
|
-
const driver = relativeFile.startsWith("api-pg/") ? "pg" : "better-sqlite3";
|
|
59
|
-
if (driver === "pg" && isAllowedMethodInfrastructure(relativeFile)) {
|
|
60
|
-
continue;
|
|
61
|
-
}
|
|
62
|
-
let ast;
|
|
63
|
-
try {
|
|
64
|
-
ast = parse(readFileSync(filePath, "utf8"), { sourceType: "module", plugins: ["typescript"] });
|
|
65
|
-
}
|
|
66
|
-
catch {
|
|
67
|
-
continue;
|
|
68
|
-
}
|
|
69
|
-
const sqliteImportNames = new Set();
|
|
70
|
-
const sourceProgram = ast.program;
|
|
71
|
-
for (const statement of sourceProgram.body ?? []) {
|
|
72
|
-
const node = statement;
|
|
73
|
-
if (node.type !== "ImportDeclaration") {
|
|
74
|
-
continue;
|
|
75
|
-
}
|
|
76
|
-
const source = node.source;
|
|
77
|
-
if (source?.type !== "StringLiteral" || source.value !== "better-sqlite3") {
|
|
78
|
-
continue;
|
|
79
|
-
}
|
|
80
|
-
const loc = node.loc;
|
|
81
|
-
const specifiers = node.specifiers ?? [];
|
|
82
|
-
for (const specifier of specifiers) {
|
|
83
|
-
const local = specifier.local;
|
|
84
|
-
if (local?.type === "Identifier" && typeof local.name === "string") {
|
|
85
|
-
sqliteImportNames.add(local.name);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
if (relativeFile !== SQLITE_ADAPTER_MODULE) {
|
|
89
|
-
violations.push({
|
|
90
|
-
file: relativeFile,
|
|
91
|
-
line: loc?.start?.line ?? 1,
|
|
92
|
-
driver: "better-sqlite3",
|
|
93
|
-
method: "import"
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
const checkMethodCalls = !isAllowedMethodInfrastructure(relativeFile);
|
|
98
|
-
const checkSqliteNativeAccess = driver === "better-sqlite3";
|
|
99
|
-
visitAst(ast, (node) => {
|
|
100
|
-
if (node.type === "MemberExpression" && !node.computed) {
|
|
101
|
-
const property = node.property;
|
|
102
|
-
const loc = node.loc;
|
|
103
|
-
if (relativeFile !== SQLITE_ADAPTER_MODULE
|
|
104
|
-
&& property?.type === "Identifier"
|
|
105
|
-
&& property.name === "$client") {
|
|
106
|
-
violations.push({
|
|
107
|
-
file: relativeFile,
|
|
108
|
-
line: loc?.start?.line ?? 1,
|
|
109
|
-
driver: "better-sqlite3",
|
|
110
|
-
method: "$client"
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
if (checkSqliteNativeAccess && node.type === "NewExpression") {
|
|
115
|
-
const callee = node.callee;
|
|
116
|
-
const loc = node.loc;
|
|
117
|
-
if (callee?.type === "Identifier" && typeof callee.name === "string" && sqliteImportNames.has(callee.name)) {
|
|
118
|
-
if (relativeFile !== SQLITE_ADAPTER_MODULE) {
|
|
119
|
-
violations.push({
|
|
120
|
-
file: relativeFile,
|
|
121
|
-
line: loc?.start?.line ?? 1,
|
|
122
|
-
driver: "better-sqlite3",
|
|
123
|
-
method: "construct"
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
if (checkSqliteNativeAccess && node.type === "MemberExpression" && !node.computed) {
|
|
129
|
-
const object = node.object;
|
|
130
|
-
const property = node.property;
|
|
131
|
-
const loc = node.loc;
|
|
132
|
-
const objectIdentifier = object?.type === "Identifier" && typeof object.name === "string" ? object.name : undefined;
|
|
133
|
-
if (objectIdentifier !== undefined
|
|
134
|
-
&& SQLITE_DRIVER_OBJECT_NAMES.has(objectIdentifier)
|
|
135
|
-
&& property?.type === "Identifier"
|
|
136
|
-
&& typeof property.name === "string"
|
|
137
|
-
&& SQLITE_ESCAPE_HATCH_PROPERTIES.has(property.name)) {
|
|
138
|
-
violations.push({
|
|
139
|
-
file: relativeFile,
|
|
140
|
-
line: loc?.start?.line ?? 1,
|
|
141
|
-
driver: "better-sqlite3",
|
|
142
|
-
method: property.name
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
if (!checkMethodCalls) {
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
const callee = node.callee;
|
|
150
|
-
const property = callee?.property;
|
|
151
|
-
const object = callee?.object;
|
|
152
|
-
const method = node.type === "CallExpression" && callee?.type === "MemberExpression" && !callee.computed && property?.type === "Identifier"
|
|
153
|
-
? property.name
|
|
154
|
-
: undefined;
|
|
155
|
-
const objectIdentifier = object?.type === "Identifier" && typeof object.name === "string" ? object.name : undefined;
|
|
156
|
-
const isThisDbCall = object?.type === "MemberExpression"
|
|
157
|
-
&& object.object && object.object.type === "ThisExpression"
|
|
158
|
-
&& object.property?.type === "Identifier"
|
|
159
|
-
&& object.property.name === "db";
|
|
160
|
-
const isDrizzleCall = object?.type === "MemberExpression"
|
|
161
|
-
&& object.property?.type === "Identifier"
|
|
162
|
-
&& object.property.name === "drizzle";
|
|
163
|
-
const isLikelySqliteDriverCall = (objectIdentifier !== undefined && SQLITE_DRIVER_OBJECT_NAMES.has(objectIdentifier)) || isThisDbCall;
|
|
164
|
-
if ((driver === "pg" && method === "query") ||
|
|
165
|
-
(driver === "better-sqlite3"
|
|
166
|
-
&& typeof method === "string"
|
|
167
|
-
&& SQLITE_RAW_METHODS.has(method)
|
|
168
|
-
&& isLikelySqliteDriverCall
|
|
169
|
-
&& !isDrizzleCall)) {
|
|
170
|
-
const loc = node.loc;
|
|
171
|
-
violations.push({
|
|
172
|
-
file: relativeFile,
|
|
173
|
-
line: loc?.start?.line ?? 1,
|
|
174
|
-
driver,
|
|
175
|
-
method: method
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
return violations;
|
|
181
|
-
}
|
|
182
|
-
//# sourceMappingURL=runtime-access-boundary.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-access-boundary.js","sourceRoot":"","sources":["../src/runtime-access-boundary.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export type EntraServiceAuth = {
|
|
2
|
-
provider: "entra";
|
|
3
|
-
tenantId: string;
|
|
4
|
-
clientId: string;
|
|
5
|
-
};
|
|
6
|
-
export type DiscoveredServiceAuth = {
|
|
7
|
-
serviceUrl: string;
|
|
8
|
-
auth: EntraServiceAuth;
|
|
9
|
-
};
|
|
10
|
-
export declare function discoverServiceAuth(serviceUrl: string, fetch?: typeof globalThis.fetch): Promise<DiscoveredServiceAuth>;
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
export async function discoverServiceAuth(serviceUrl, fetch = globalThis.fetch) {
|
|
2
|
-
const normalizedUrl = new URL(serviceUrl.trim());
|
|
3
|
-
if (normalizedUrl.protocol !== "http:" && normalizedUrl.protocol !== "https:") {
|
|
4
|
-
throw new Error(`Unsupported service URL protocol: ${normalizedUrl.protocol}`);
|
|
5
|
-
}
|
|
6
|
-
if (normalizedUrl.username || normalizedUrl.password) {
|
|
7
|
-
throw new Error("Service URL must not contain embedded credentials.");
|
|
8
|
-
}
|
|
9
|
-
normalizedUrl.pathname = normalizedUrl.pathname.replace(/\/+$/, "");
|
|
10
|
-
normalizedUrl.search = "";
|
|
11
|
-
normalizedUrl.hash = "";
|
|
12
|
-
const normalizedServiceUrl = normalizedUrl.toString().replace(/\/$/, "");
|
|
13
|
-
const discoveryUrl = `${normalizedServiceUrl}/.well-known/agent-issues`;
|
|
14
|
-
let response;
|
|
15
|
-
try {
|
|
16
|
-
response = await fetch(discoveryUrl, { headers: { accept: "application/json" } });
|
|
17
|
-
}
|
|
18
|
-
catch (error) {
|
|
19
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
20
|
-
throw new Error(`Could not reach ${discoveryUrl}: ${message}`, { cause: error });
|
|
21
|
-
}
|
|
22
|
-
if (!response.ok) {
|
|
23
|
-
throw new Error(`Service discovery failed with HTTP ${response.status} at ${discoveryUrl}.`);
|
|
24
|
-
}
|
|
25
|
-
let body;
|
|
26
|
-
try {
|
|
27
|
-
body = await response.json();
|
|
28
|
-
}
|
|
29
|
-
catch (error) {
|
|
30
|
-
throw new Error("Service returned malformed agent-issues auth metadata.", { cause: error });
|
|
31
|
-
}
|
|
32
|
-
const provider = readAuthProvider(body);
|
|
33
|
-
if (provider !== undefined && provider !== "entra") {
|
|
34
|
-
throw new Error(`Unsupported service authentication provider: "${provider}".`);
|
|
35
|
-
}
|
|
36
|
-
if (!isEntraMetadata(body)) {
|
|
37
|
-
throw new Error("Service returned malformed agent-issues auth metadata.");
|
|
38
|
-
}
|
|
39
|
-
return { serviceUrl: normalizedServiceUrl, auth: body.auth };
|
|
40
|
-
}
|
|
41
|
-
function readAuthProvider(value) {
|
|
42
|
-
if (typeof value !== "object" || value === null || !("auth" in value))
|
|
43
|
-
return undefined;
|
|
44
|
-
const auth = value.auth;
|
|
45
|
-
if (typeof auth !== "object" || auth === null || !("provider" in auth))
|
|
46
|
-
return undefined;
|
|
47
|
-
return auth.provider;
|
|
48
|
-
}
|
|
49
|
-
function isEntraMetadata(value) {
|
|
50
|
-
if (typeof value !== "object" || value === null || !("auth" in value))
|
|
51
|
-
return false;
|
|
52
|
-
const auth = value.auth;
|
|
53
|
-
return (typeof auth === "object" &&
|
|
54
|
-
auth !== null &&
|
|
55
|
-
"provider" in auth &&
|
|
56
|
-
auth.provider === "entra" &&
|
|
57
|
-
"tenantId" in auth &&
|
|
58
|
-
typeof auth.tenantId === "string" &&
|
|
59
|
-
auth.tenantId.length > 0 &&
|
|
60
|
-
"clientId" in auth &&
|
|
61
|
-
typeof auth.clientId === "string" &&
|
|
62
|
-
auth.clientId.length > 0);
|
|
63
|
-
}
|
|
64
|
-
//# sourceMappingURL=service-discovery.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service-discovery.js","sourceRoot":"","sources":["../src/service-discovery.ts"],"names":[],"mappings":"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"}
|
package/dist/site/assets.d.ts
DELETED
package/dist/site/assets.js
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { cpSync, existsSync } from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { fileURLToPath } from "node:url";
|
|
4
|
-
const siteDistDir = fileURLToPath(new URL("../../site/dist/", import.meta.url));
|
|
5
|
-
export function ensureBuiltSite() {
|
|
6
|
-
const entrypoint = path.join(siteDistDir, "index.html");
|
|
7
|
-
if (!existsSync(entrypoint)) {
|
|
8
|
-
throw new Error("Site assets are not built. Run `pnpm run build` before serving or exporting the site.");
|
|
9
|
-
}
|
|
10
|
-
return siteDistDir;
|
|
11
|
-
}
|
|
12
|
-
export function copyBuiltSite(outputDir) {
|
|
13
|
-
cpSync(ensureBuiltSite(), outputDir, { force: true, recursive: true });
|
|
14
|
-
}
|
|
15
|
-
export function getBuiltSiteAssetPath(requestPath) {
|
|
16
|
-
const normalized = requestPath === "/" ? "/index.html" : requestPath;
|
|
17
|
-
const cleaned = normalized.replace(/^\/+/, "");
|
|
18
|
-
const root = ensureBuiltSite();
|
|
19
|
-
const candidate = path.resolve(root, cleaned);
|
|
20
|
-
if (!candidate.startsWith(root)) {
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
23
|
-
return existsSync(candidate) ? candidate : null;
|
|
24
|
-
}
|
|
25
|
-
export function getContentType(filePath) {
|
|
26
|
-
if (filePath.endsWith(".html")) {
|
|
27
|
-
return "text/html; charset=utf-8";
|
|
28
|
-
}
|
|
29
|
-
if (filePath.endsWith(".js")) {
|
|
30
|
-
return "text/javascript; charset=utf-8";
|
|
31
|
-
}
|
|
32
|
-
if (filePath.endsWith(".css")) {
|
|
33
|
-
return "text/css; charset=utf-8";
|
|
34
|
-
}
|
|
35
|
-
if (filePath.endsWith(".json")) {
|
|
36
|
-
return "application/json; charset=utf-8";
|
|
37
|
-
}
|
|
38
|
-
if (filePath.endsWith(".svg")) {
|
|
39
|
-
return "image/svg+xml";
|
|
40
|
-
}
|
|
41
|
-
if (filePath.endsWith(".ico")) {
|
|
42
|
-
return "image/x-icon";
|
|
43
|
-
}
|
|
44
|
-
return "application/octet-stream";
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=assets.js.map
|
package/dist/site/assets.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/site/assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,kBAAkB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEhF,MAAM,UAAU,eAAe;IAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;IAC1G,CAAC;IAED,OAAO,WAAW,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC9C,MAAM,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,WAAmB;IACxD,MAAM,UAAU,GAAG,WAAW,KAAK,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC;IACrE,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC9C,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,OAAO,0BAA0B,CAAC;IACnC,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,gCAAgC,CAAC;IACzC,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,OAAO,yBAAyB,CAAC;IAClC,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,OAAO,iCAAiC,CAAC;IAC1C,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,OAAO,eAAe,CAAC;IACxB,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,OAAO,cAAc,CAAC;IACvB,CAAC;IAED,OAAO,0BAA0B,CAAC;AACnC,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { ProjectChangeEvent } from "@agent-issues/core";
|
|
2
|
-
export type CloudEventsConnection = {
|
|
3
|
-
baseUrl: string;
|
|
4
|
-
bearerToken: string;
|
|
5
|
-
};
|
|
6
|
-
export type CloudChangeEvent = ProjectChangeEvent;
|
|
7
|
-
/**
|
|
8
|
-
* Relays the cloud API's own `/events` SSE channel (ISS48) into a callback,
|
|
9
|
-
* so the site server's `/events` route can re-broadcast `snapshot-changed`
|
|
10
|
-
* events to its own browser clients using the identical event shape - the
|
|
11
|
-
* cloud-mode counterpart to the local file-watch poll (ISS56). Only
|
|
12
|
-
* `snapshot-changed` events reach the callback; the gate's own per-connection
|
|
13
|
-
* `connected` event is swallowed here since the browser side already gets
|
|
14
|
-
* its own `connected` event from the site server.
|
|
15
|
-
*/
|
|
16
|
-
export declare function subscribeToCloudEvents(connection: CloudEventsConnection, onEvent: (event: CloudChangeEvent) => void): () => void;
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
const RECONNECT_DELAY_MS = 1000;
|
|
2
|
-
/**
|
|
3
|
-
* Relays the cloud API's own `/events` SSE channel (ISS48) into a callback,
|
|
4
|
-
* so the site server's `/events` route can re-broadcast `snapshot-changed`
|
|
5
|
-
* events to its own browser clients using the identical event shape - the
|
|
6
|
-
* cloud-mode counterpart to the local file-watch poll (ISS56). Only
|
|
7
|
-
* `snapshot-changed` events reach the callback; the gate's own per-connection
|
|
8
|
-
* `connected` event is swallowed here since the browser side already gets
|
|
9
|
-
* its own `connected` event from the site server.
|
|
10
|
-
*/
|
|
11
|
-
export function subscribeToCloudEvents(connection, onEvent) {
|
|
12
|
-
const controller = new AbortController();
|
|
13
|
-
void relay(connection, controller.signal, onEvent);
|
|
14
|
-
return () => controller.abort();
|
|
15
|
-
}
|
|
16
|
-
async function relay(connection, signal, onEvent) {
|
|
17
|
-
while (!signal.aborted) {
|
|
18
|
-
try {
|
|
19
|
-
const response = await fetch(`${connection.baseUrl}/events`, {
|
|
20
|
-
headers: { authorization: `Bearer ${connection.bearerToken}` },
|
|
21
|
-
signal
|
|
22
|
-
});
|
|
23
|
-
if (response.ok && response.body) {
|
|
24
|
-
await readEventStream(response.body, onEvent);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
catch {
|
|
28
|
-
// Connection dropped or was aborted; fall through to the reconnect delay
|
|
29
|
-
// (or exit the loop if aborted).
|
|
30
|
-
}
|
|
31
|
-
if (!signal.aborted) {
|
|
32
|
-
await delay(RECONNECT_DELAY_MS, signal);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
async function readEventStream(body, onEvent) {
|
|
37
|
-
const decoder = new TextDecoder();
|
|
38
|
-
let buffer = "";
|
|
39
|
-
for await (const chunk of body) {
|
|
40
|
-
buffer += decoder.decode(chunk, { stream: true });
|
|
41
|
-
let boundary = buffer.indexOf("\n\n");
|
|
42
|
-
while (boundary !== -1) {
|
|
43
|
-
const rawEvent = buffer.slice(0, boundary);
|
|
44
|
-
buffer = buffer.slice(boundary + 2);
|
|
45
|
-
emitParsedEvent(rawEvent, onEvent);
|
|
46
|
-
boundary = buffer.indexOf("\n\n");
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
function emitParsedEvent(rawEvent, onEvent) {
|
|
51
|
-
const dataLine = rawEvent.split("\n").find((line) => line.startsWith("data:"));
|
|
52
|
-
if (!dataLine) {
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
try {
|
|
56
|
-
const parsed = JSON.parse(dataLine.slice("data:".length).trim());
|
|
57
|
-
if (parsed.type === "snapshot-changed") {
|
|
58
|
-
onEvent(parsed);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
catch {
|
|
62
|
-
// Malformed event payload; ignore rather than crash the relay.
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
function delay(ms, signal) {
|
|
66
|
-
return new Promise((resolve) => {
|
|
67
|
-
if (signal.aborted) {
|
|
68
|
-
resolve();
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
const timeout = setTimeout(resolve, ms);
|
|
72
|
-
signal.addEventListener("abort", () => {
|
|
73
|
-
clearTimeout(timeout);
|
|
74
|
-
resolve();
|
|
75
|
-
}, { once: true });
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
//# sourceMappingURL=cloud-events-relay.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-events-relay.js","sourceRoot":"","sources":["../../src/site/cloud-events-relay.ts"],"names":[],"mappings":"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"}
|
package/dist/site/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { startLiveSite, stopLiveSite, type LiveSiteHandle, type LiveSiteInfo, type StopLiveSiteResult } from "./server.js";
|
package/dist/site/index.js
DELETED
package/dist/site/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/site/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAmE,MAAM,aAAa,CAAC"}
|
package/dist/site/server.d.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { type Server } from "node:http";
|
|
2
|
-
import type { SavedLoginStoreOptions } from "../auth-session.js";
|
|
3
|
-
export type LiveSiteInfo = {
|
|
4
|
-
dbPath: string;
|
|
5
|
-
host: string;
|
|
6
|
-
port: number;
|
|
7
|
-
url: string;
|
|
8
|
-
defaultTenant: string;
|
|
9
|
-
};
|
|
10
|
-
export type LiveSiteHandle = {
|
|
11
|
-
info: LiveSiteInfo;
|
|
12
|
-
server: Server;
|
|
13
|
-
close: () => void;
|
|
14
|
-
};
|
|
15
|
-
export type StopLiveSiteResult = {
|
|
16
|
-
host: string;
|
|
17
|
-
port: number;
|
|
18
|
-
url: string;
|
|
19
|
-
reachable: boolean;
|
|
20
|
-
stopped: boolean;
|
|
21
|
-
};
|
|
22
|
-
export declare function startLiveSite(input: {
|
|
23
|
-
dbPath?: string;
|
|
24
|
-
host?: string;
|
|
25
|
-
port?: number;
|
|
26
|
-
tenant?: string;
|
|
27
|
-
currentWorkingDirectory?: string;
|
|
28
|
-
/** Overrides the local-mode snapshot-signature poll interval; defaults to 1000ms. Test-only knob. */
|
|
29
|
-
pollIntervalMs?: number;
|
|
30
|
-
/**
|
|
31
|
-
* Overrides how `auth-session.ts` reaches the native OS credential store
|
|
32
|
-
* (ISS185, ADR46) for the remote saved-login lookup. Production
|
|
33
|
-
* never sets this - the real OS tool is used. Tests inject an
|
|
34
|
-
* in-memory fake so a remote-routed site server never shells out to the
|
|
35
|
-
* real credential store.
|
|
36
|
-
*/
|
|
37
|
-
credentialStoreOptions?: SavedLoginStoreOptions;
|
|
38
|
-
}): Promise<LiveSiteHandle>;
|
|
39
|
-
export declare function stopLiveSite(input: {
|
|
40
|
-
host?: string;
|
|
41
|
-
port?: number;
|
|
42
|
-
}): Promise<StopLiveSiteResult>;
|