@geminixiang/mikan 1.0.0-beta.21 → 1.0.0-beta.22
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/CHANGELOG.md +26 -0
- package/dist/adapters/intake.d.ts.map +1 -1
- package/dist/adapters/intake.js +5 -0
- package/dist/adapters/intake.js.map +1 -1
- package/dist/adapters/slack/bot.d.ts.map +1 -1
- package/dist/adapters/slack/bot.js +13 -2
- package/dist/adapters/slack/bot.js.map +1 -1
- package/dist/adapters/slack/types.d.ts +2 -0
- package/dist/adapters/slack/types.d.ts.map +1 -1
- package/dist/adapters/slack/types.js.map +1 -1
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +26 -15
- package/dist/agent.js.map +1 -1
- package/dist/commands/login.js +2 -2
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/sandbox.js +2 -2
- package/dist/commands/sandbox.js.map +1 -1
- package/dist/execution-resolver.d.ts +5 -6
- package/dist/execution-resolver.d.ts.map +1 -1
- package/dist/execution-resolver.js +72 -103
- package/dist/execution-resolver.js.map +1 -1
- package/dist/harness/index.d.ts +1 -1
- package/dist/harness/index.d.ts.map +1 -1
- package/dist/harness/index.js.map +1 -1
- package/dist/harness/runner.d.ts +4 -0
- package/dist/harness/runner.d.ts.map +1 -1
- package/dist/harness/runner.js +16 -2
- package/dist/harness/runner.js.map +1 -1
- package/dist/harness/subagent-runner.d.ts +14 -13
- package/dist/harness/subagent-runner.d.ts.map +1 -1
- package/dist/harness/subagent-runner.js +105 -19
- package/dist/harness/subagent-runner.js.map +1 -1
- package/dist/harness/types.d.ts +11 -0
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/harness/types.js.map +1 -1
- package/dist/runtime/conversation-runtime.d.ts.map +1 -1
- package/dist/runtime/conversation-runtime.js +23 -79
- package/dist/runtime/conversation-runtime.js.map +1 -1
- package/dist/runtime/session-lifecycle.d.ts +19 -0
- package/dist/runtime/session-lifecycle.d.ts.map +1 -0
- package/dist/runtime/session-lifecycle.js +76 -0
- package/dist/runtime/session-lifecycle.js.map +1 -0
- package/dist/runtime/types.d.ts +5 -0
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/types.js.map +1 -1
- package/dist/sandbox/cloudflare.d.ts.map +1 -1
- package/dist/sandbox/cloudflare.js +1 -0
- package/dist/sandbox/cloudflare.js.map +1 -1
- package/dist/sandbox/container.d.ts.map +1 -1
- package/dist/sandbox/container.js +1 -0
- package/dist/sandbox/container.js.map +1 -1
- package/dist/sandbox/firecracker.d.ts.map +1 -1
- package/dist/sandbox/firecracker.js +1 -0
- package/dist/sandbox/firecracker.js.map +1 -1
- package/dist/sandbox/gondolin.d.ts.map +1 -1
- package/dist/sandbox/gondolin.js +1 -0
- package/dist/sandbox/gondolin.js.map +1 -1
- package/dist/sandbox/host.d.ts.map +1 -1
- package/dist/sandbox/host.js +1 -0
- package/dist/sandbox/host.js.map +1 -1
- package/dist/sandbox/identity.d.ts +11 -16
- package/dist/sandbox/identity.d.ts.map +1 -1
- package/dist/sandbox/identity.js +32 -26
- package/dist/sandbox/identity.js.map +1 -1
- package/dist/sandbox/image.d.ts.map +1 -1
- package/dist/sandbox/image.js +1 -0
- package/dist/sandbox/image.js.map +1 -1
- package/dist/sandbox/index.d.ts +1 -0
- package/dist/sandbox/index.d.ts.map +1 -1
- package/dist/sandbox/index.js +6 -0
- package/dist/sandbox/index.js.map +1 -1
- package/dist/sandbox/types.d.ts +5 -0
- package/dist/sandbox/types.d.ts.map +1 -1
- package/dist/sandbox/types.js.map +1 -1
- package/dist/sessions/session-key.d.ts +9 -0
- package/dist/sessions/session-key.d.ts.map +1 -1
- package/dist/sessions/session-key.js +50 -2
- package/dist/sessions/session-key.js.map +1 -1
- package/dist/sessions/store.d.ts.map +1 -1
- package/dist/sessions/store.js +36 -8
- package/dist/sessions/store.js.map +1 -1
- package/dist/tools/sandbox.js +2 -2
- package/dist/tools/sandbox.js.map +1 -1
- package/dist/tools/subagent-slots.d.ts +3 -3
- package/dist/tools/subagent-slots.d.ts.map +1 -1
- package/dist/tools/subagent-slots.js +25 -10
- package/dist/tools/subagent-slots.js.map +1 -1
- package/dist/tools/subagent.d.ts +13 -2
- package/dist/tools/subagent.d.ts.map +1 -1
- package/dist/tools/subagent.js +16 -16
- package/dist/tools/subagent.js.map +1 -1
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/vault/injection.d.ts +4 -14
- package/dist/vault/injection.d.ts.map +1 -1
- package/dist/vault/injection.js +5 -2
- package/dist/vault/injection.js.map +1 -1
- package/dist/vault/types.d.ts +4 -0
- package/dist/vault/types.d.ts.map +1 -1
- package/dist/vault/types.js.map +1 -1
- package/dist/web/admin/portal.js +2 -2
- package/dist/web/admin/portal.js.map +1 -1
- package/dist/workspace-projection/index.d.ts +5 -0
- package/dist/workspace-projection/index.d.ts.map +1 -0
- package/dist/workspace-projection/index.js +71 -0
- package/dist/workspace-projection/index.js.map +1 -0
- package/dist/workspace-projection/types.d.ts +7 -0
- package/dist/workspace-projection/types.d.ts.map +1 -0
- package/dist/workspace-projection/types.js +2 -0
- package/dist/workspace-projection/types.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ImageWorkspaceMountMode } from "../types.js";
|
|
2
|
+
import type { WorkspaceProjection } from "./types.js";
|
|
3
|
+
export declare function resolveWorkspaceProjection(hostWorkspaceRoot: string | undefined, conversationId: string): WorkspaceProjection;
|
|
4
|
+
export declare function readWorkspaceProjectionMode(hostWorkspaceRoot: string | undefined, conversationId: string): ImageWorkspaceMountMode;
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workspace-projection/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,wBAAgB,0BAA0B,CACxC,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,cAAc,EAAE,MAAM,GACrB,mBAAmB,CAsBrB;AAED,wBAAgB,2BAA2B,CACzC,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,cAAc,EAAE,MAAM,GACrB,uBAAuB,CAiBzB"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { ensureDirExists, isRecord, readJsonFileIfExists } from "../utils/file-guards.js";
|
|
3
|
+
import { conversationSettingsPath, loadGlobalSettings, resolveConversationSettings, } from "../config.js";
|
|
4
|
+
import * as log from "../log.js";
|
|
5
|
+
export function resolveWorkspaceProjection(hostWorkspaceRoot, conversationId) {
|
|
6
|
+
assertConversationPathSegment(conversationId);
|
|
7
|
+
const mode = readWorkspaceProjectionMode(hostWorkspaceRoot, conversationId);
|
|
8
|
+
if (!hostWorkspaceRoot)
|
|
9
|
+
return { mode, mounts: [] };
|
|
10
|
+
if (mode === "full") {
|
|
11
|
+
return {
|
|
12
|
+
mode,
|
|
13
|
+
mounts: [{ source: hostWorkspaceRoot, target: "/workspace" }],
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
const conversationDir = join(hostWorkspaceRoot, conversationId);
|
|
17
|
+
ensureDirExists(conversationDir);
|
|
18
|
+
return {
|
|
19
|
+
mode,
|
|
20
|
+
mounts: [
|
|
21
|
+
{ source: join(hostWorkspaceRoot, "MEMORY.md"), target: "/workspace/MEMORY.md" },
|
|
22
|
+
{ source: join(hostWorkspaceRoot, "skills"), target: "/workspace/skills" },
|
|
23
|
+
{ source: join(hostWorkspaceRoot, "events"), target: "/workspace/events" },
|
|
24
|
+
{ source: conversationDir, target: `/workspace/${conversationId}` },
|
|
25
|
+
],
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export function readWorkspaceProjectionMode(hostWorkspaceRoot, conversationId) {
|
|
29
|
+
assertConversationPathSegment(conversationId);
|
|
30
|
+
const globalDefault = readGlobalMode();
|
|
31
|
+
if (!hostWorkspaceRoot)
|
|
32
|
+
return globalDefault;
|
|
33
|
+
const conversationDir = join(hostWorkspaceRoot, conversationId);
|
|
34
|
+
try {
|
|
35
|
+
return (resolveConversationSettings(conversationDir).sandbox?.image?.workspaceMount ?? globalDefault);
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
log.logWarning("Falling back while resolving conversation workspace projection", err instanceof Error ? err.message : String(err));
|
|
39
|
+
return readFallback(conversationSettingsPath(conversationDir)) ?? globalDefault;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function assertConversationPathSegment(conversationId) {
|
|
43
|
+
if (conversationId.length === 0 ||
|
|
44
|
+
conversationId === "." ||
|
|
45
|
+
conversationId === ".." ||
|
|
46
|
+
conversationId.includes("/") ||
|
|
47
|
+
conversationId.includes("\\") ||
|
|
48
|
+
conversationId.includes("\0")) {
|
|
49
|
+
throw new Error("Conversation id must be a safe path segment");
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function readGlobalMode() {
|
|
53
|
+
try {
|
|
54
|
+
return loadGlobalSettings().sandbox?.image?.workspaceMount ?? "private";
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
log.logWarning("Using default workspace projection because global settings could not be read", err instanceof Error ? err.message : String(err));
|
|
58
|
+
return "private";
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function readFallback(settingsPath) {
|
|
62
|
+
try {
|
|
63
|
+
const raw = readJsonFileIfExists(settingsPath, (value) => isRecord(value), () => "Ignoring malformed conversation settings while resolving workspace projection");
|
|
64
|
+
return raw?.sandbox?.image?.workspaceMount;
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
log.logWarning("Ignoring malformed conversation settings fallback while resolving workspace projection", err instanceof Error ? err.message : String(err));
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workspace-projection/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { join } from \"node:path\";\nimport { ensureDirExists, isRecord, readJsonFileIfExists } from \"../utils/file-guards.js\";\nimport {\n conversationSettingsPath,\n loadGlobalSettings,\n resolveConversationSettings,\n} from \"../config.js\";\nimport * as log from \"../log.js\";\nimport type { ImageWorkspaceMountMode } from \"../types.js\";\nimport type { WorkspaceProjection } from \"./types.js\";\n\nexport function resolveWorkspaceProjection(\n hostWorkspaceRoot: string | undefined,\n conversationId: string,\n): WorkspaceProjection {\n assertConversationPathSegment(conversationId);\n const mode = readWorkspaceProjectionMode(hostWorkspaceRoot, conversationId);\n if (!hostWorkspaceRoot) return { mode, mounts: [] };\n if (mode === \"full\") {\n return {\n mode,\n mounts: [{ source: hostWorkspaceRoot, target: \"/workspace\" }],\n };\n }\n\n const conversationDir = join(hostWorkspaceRoot, conversationId);\n ensureDirExists(conversationDir);\n return {\n mode,\n mounts: [\n { source: join(hostWorkspaceRoot, \"MEMORY.md\"), target: \"/workspace/MEMORY.md\" },\n { source: join(hostWorkspaceRoot, \"skills\"), target: \"/workspace/skills\" },\n { source: join(hostWorkspaceRoot, \"events\"), target: \"/workspace/events\" },\n { source: conversationDir, target: `/workspace/${conversationId}` },\n ],\n };\n}\n\nexport function readWorkspaceProjectionMode(\n hostWorkspaceRoot: string | undefined,\n conversationId: string,\n): ImageWorkspaceMountMode {\n assertConversationPathSegment(conversationId);\n const globalDefault = readGlobalMode();\n if (!hostWorkspaceRoot) return globalDefault;\n\n const conversationDir = join(hostWorkspaceRoot, conversationId);\n try {\n return (\n resolveConversationSettings(conversationDir).sandbox?.image?.workspaceMount ?? globalDefault\n );\n } catch (err) {\n log.logWarning(\n \"Falling back while resolving conversation workspace projection\",\n err instanceof Error ? err.message : String(err),\n );\n return readFallback(conversationSettingsPath(conversationDir)) ?? globalDefault;\n }\n}\n\nfunction assertConversationPathSegment(conversationId: string): void {\n if (\n conversationId.length === 0 ||\n conversationId === \".\" ||\n conversationId === \"..\" ||\n conversationId.includes(\"/\") ||\n conversationId.includes(\"\\\\\") ||\n conversationId.includes(\"\\0\")\n ) {\n throw new Error(\"Conversation id must be a safe path segment\");\n }\n}\n\nfunction readGlobalMode(): ImageWorkspaceMountMode {\n try {\n return loadGlobalSettings().sandbox?.image?.workspaceMount ?? \"private\";\n } catch (err) {\n log.logWarning(\n \"Using default workspace projection because global settings could not be read\",\n err instanceof Error ? err.message : String(err),\n );\n return \"private\";\n }\n}\n\nfunction readFallback(settingsPath: string): ImageWorkspaceMountMode | undefined {\n try {\n const raw = readJsonFileIfExists(\n settingsPath,\n (value): value is { sandbox?: { image?: { workspaceMount?: ImageWorkspaceMountMode } } } =>\n isRecord(value),\n () => \"Ignoring malformed conversation settings while resolving workspace projection\",\n );\n return raw?.sandbox?.image?.workspaceMount;\n } catch (err) {\n log.logWarning(\n \"Ignoring malformed conversation settings fallback while resolving workspace projection\",\n err instanceof Error ? err.message : String(err),\n );\n return undefined;\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/workspace-projection/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAE3D,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,uBAAuB,CAAC;IAC9B,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/workspace-projection/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ContainerMount } from \"../types.js\";\nimport type { ImageWorkspaceMountMode } from \"../types.js\";\n\nexport interface WorkspaceProjection {\n mode: ImageWorkspaceMountMode;\n mounts: ContainerMount[];\n}\n"]}
|