open-multi-agent-kit 0.78.8 → 0.79.3
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/AGENTS.md +131 -2
- package/CHANGELOG.md +32 -0
- package/CLAUDE.md +105 -3
- package/DESIGN.md +141 -117
- package/MATURITY.md +7 -12
- package/README.md +66 -347
- package/ROADMAP.md +33 -47
- package/dist/adapters/kimi/runner.js +2 -2
- package/dist/brand/theme.js +2 -2
- package/dist/cli/register-basic-commands.js +3 -2
- package/dist/cli/register-mcp-dag-cron-screenshot-commands.js +1 -1
- package/dist/cli/root.d.ts +1 -0
- package/dist/cli/root.js +2 -0
- package/dist/cli/runtime/command-bus.js +14 -1
- package/dist/cli/theme/terminal-capability.js +1 -1
- package/dist/cli/theme/theme-registry.js +90 -2
- package/dist/cli/ui/event.d.ts +1 -0
- package/dist/cli/ui/neon-grid-renderer.d.ts +8 -0
- package/dist/cli/ui/neon-grid-renderer.js +84 -14
- package/dist/cli/ui/plain-renderer.js +3 -1
- package/dist/cli/ui/system24-renderer.js +3 -1
- package/dist/cli/v2/chat-repl.d.ts +2 -1
- package/dist/cli/v2/chat-repl.js +58 -2
- package/dist/cli/v2/cli-v2-skeleton.js +7 -4
- package/dist/cli/v2/interactive-prompt.js +4 -3
- package/dist/commands/auth.js +2 -0
- package/dist/commands/chat/native-root-loop.d.ts +1 -0
- package/dist/commands/chat/native-root-loop.js +162 -13
- package/dist/commands/chat/runtime.js +9 -0
- package/dist/commands/chat/slash/commands/routing.js +31 -1
- package/dist/commands/chat/utils.js +3 -1
- package/dist/commands/cockpit/render.js +2 -1
- package/dist/commands/doctor/checks.js +2 -2
- package/dist/commands/init/core.js +2 -2
- package/dist/commands/init.js +2 -2
- package/dist/commands/mcp/config.js +38 -16
- package/dist/commands/mcp/doctor.js +7 -8
- package/dist/commands/mcp/list.js +4 -3
- package/dist/commands/mcp/shared.d.ts +4 -1
- package/dist/commands/mcp/shared.js +21 -3
- package/dist/commands/mcp/test.js +13 -12
- package/dist/commands/model.js +4 -0
- package/dist/commands/provider.js +5 -1
- package/dist/commands/version.d.ts +1 -0
- package/dist/commands/version.js +18 -0
- package/dist/contracts/command.d.ts +25 -0
- package/dist/contracts/command.js +1 -0
- package/dist/contracts/evidence-bundle.d.ts +52 -0
- package/dist/contracts/evidence-bundle.js +1 -0
- package/dist/contracts/index.d.ts +2 -0
- package/dist/contracts/index.js +2 -0
- package/dist/contracts/web-bridge.d.ts +1 -1
- package/dist/contracts/web-bridge.js +1 -1
- package/dist/evidence/bundle-validator.d.ts +7 -0
- package/dist/evidence/bundle-validator.js +103 -0
- package/dist/evidence/index.d.ts +5 -0
- package/dist/evidence/index.js +2 -0
- package/dist/evidence/proof-trust.js +2 -10
- package/dist/evidence/trust-calibration.d.ts +25 -0
- package/dist/evidence/trust-calibration.js +151 -0
- package/dist/mcp/omk-project-server.js +1 -1
- package/dist/metrics/provenance-ratio.d.ts +16 -0
- package/dist/metrics/provenance-ratio.js +33 -0
- package/dist/orchestration/dag.d.ts +17 -0
- package/dist/orchestration/ensemble-decision.d.ts +2 -0
- package/dist/orchestration/ensemble-decision.js +4 -0
- package/dist/orchestration/hedge-persona-weights.d.ts +25 -0
- package/dist/orchestration/hedge-persona-weights.js +43 -0
- package/dist/orchestration/parallel-ui.d.ts +1 -0
- package/dist/orchestration/parallel-ui.js +12 -3
- package/dist/orchestration/route-calibration.d.ts +27 -0
- package/dist/orchestration/route-calibration.js +123 -0
- package/dist/orchestration/routing/mcp-config.js +5 -1
- package/dist/orchestration/routing/types.d.ts +21 -0
- package/dist/orchestration/routing.d.ts +10 -0
- package/dist/orchestration/routing.js +89 -3
- package/dist/providers/model-registry.d.ts +2 -1
- package/dist/providers/model-registry.js +76 -4
- package/dist/providers/provider-runtime.js +9 -1
- package/dist/providers/thinking-levels.js +2 -0
- package/dist/providers/types.d.ts +1 -1
- package/dist/runtime/glm-api-runtime.d.ts +4 -0
- package/dist/runtime/glm-api-runtime.js +15 -0
- package/dist/runtime/index.d.ts +1 -0
- package/dist/runtime/index.js +1 -0
- package/dist/runtime/kimi-api-runtime.d.ts +6 -1
- package/dist/runtime/kimi-api-runtime.js +10 -4
- package/dist/runtime/recovery-artifact-store.d.ts +39 -0
- package/dist/runtime/recovery-artifact-store.js +111 -0
- package/dist/runtime/runtime-backed-task-runner.js +10 -0
- package/dist/runtime/runtime-bootstrap.js +17 -1
- package/dist/runtime/slash-commands.js +38 -5
- package/dist/schema/command.schema.d.ts +121 -0
- package/dist/schema/command.schema.js +25 -0
- package/dist/schema/envelope.schema.d.ts +2 -2
- package/dist/schema/evidence-bundle.schema.d.ts +196 -0
- package/dist/schema/evidence-bundle.schema.js +38 -0
- package/dist/schema/index.d.ts +2 -0
- package/dist/schema/index.js +2 -0
- package/dist/schema/proof-bundle.schema.d.ts +2 -2
- package/dist/theme/external-theme-adapters.d.ts +27 -0
- package/dist/theme/external-theme-adapters.js +52 -0
- package/dist/theme/library-effects.d.ts +12 -0
- package/dist/theme/library-effects.js +47 -0
- package/dist/theme/parallel.js +3 -2
- package/dist/tui/terminal-frame-renderer.d.ts +9 -1
- package/dist/tui/terminal-frame-renderer.js +77 -7
- package/dist/util/chat-cockpit.d.ts +3 -1
- package/dist/util/chat-cockpit.js +44 -5
- package/dist/util/command-envelope.d.ts +19 -0
- package/dist/util/command-envelope.js +31 -0
- package/dist/util/events-logger.d.ts +1 -1
- package/dist/util/events-logger.js +23 -16
- package/dist/util/fs/mcp-diagnose.js +2 -1
- package/dist/util/fs/mcp-runtime-config.js +14 -2
- package/dist/util/i18n.js +2 -2
- package/dist/util/screenshot-store.d.ts +7 -0
- package/dist/util/screenshot-store.js +30 -0
- package/dist/util/terminal-kit-bridge.d.ts +24 -0
- package/dist/util/terminal-kit-bridge.js +60 -0
- package/dist/util/terminal-owner.d.ts +1 -0
- package/dist/util/terminal-owner.js +31 -0
- package/dist/version.d.ts +3 -1
- package/dist/version.js +4 -0
- package/docs/2026-05-18-project-direction.md +1 -1
- package/docs/2026-06-14/critical-issues.md +19 -0
- package/docs/2026-06-14/improvements.md +15 -0
- package/docs/2026-06-14/init-checklist.md +25 -0
- package/docs/2026-06-14/plan.md +20 -0
- package/docs/2026-06-15/critical-issues.md +19 -0
- package/docs/2026-06-15/improvements.md +15 -0
- package/docs/2026-06-15/init-checklist.md +25 -0
- package/docs/2026-06-15/plan.md +20 -0
- package/docs/claims.md +85 -0
- package/docs/comparisons/omk-vs-claude-code.md +31 -0
- package/docs/comparisons/omk-vs-codex.md +33 -0
- package/docs/comparisons/omk-vs-mcp-agent.md +33 -0
- package/docs/comparisons/omk-vs-opencode.md +32 -0
- package/docs/decision-layer-calibration.md +20 -0
- package/docs/geo-eval-prompts.md +53 -0
- package/docs/getting-started.md +3 -31
- package/docs/headroom-omk-setup-guide.md +2 -2
- package/docs/integrations/adaptorch.md +46 -0
- package/docs/native-root-runtime-algorithms.md +2 -303
- package/docs/native-root-runtime-hardening.md +1 -1
- package/docs/provider-maturity.md +1 -1
- package/docs/use-cases/evidence-gated-coding-agents.md +52 -0
- package/docs/use-cases/no-kimi-mode.md +38 -0
- package/docs/use-cases/provider-routing-for-ai-coding.md +36 -0
- package/docs/use-cases/replayable-agent-runs.md +40 -0
- package/docs/use-cases/scoped-mcp-for-coding-agents.md +34 -0
- package/docs/versioning.md +9 -3
- package/docs/what-is-omk.md +64 -0
- package/llms.txt +28 -18
- package/package.json +7 -2
- package/readmeasset/.npmignore +3 -0
- package/readmeasset/ASSET_INDEX.md +3 -0
- package/readmeasset/ASSET_PROVENANCE.md +6 -0
- package/readmeasset/omk-adaptorch-ouroboros-supermemory.svg +95 -0
- package/readmeasset/omk-init-control-loop.svg +118 -0
- package/readmeasset/omk-parallel-subagents.svg +97 -0
- package/templates/web-bridge/chrome-extension/background.js +1 -1
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const OmkCommandEnvelopeStatusSchema: z.ZodEnum<["pass", "warn", "fail"]>;
|
|
3
|
+
export declare const OmkCommandDiagnosticSchema: z.ZodObject<{
|
|
4
|
+
severity: z.ZodEnum<["info", "warn", "error"]>;
|
|
5
|
+
code: z.ZodString;
|
|
6
|
+
message: z.ZodString;
|
|
7
|
+
redacted: z.ZodBoolean;
|
|
8
|
+
remediation: z.ZodOptional<z.ZodString>;
|
|
9
|
+
path: z.ZodOptional<z.ZodString>;
|
|
10
|
+
}, "strip", z.ZodTypeAny, {
|
|
11
|
+
message: string;
|
|
12
|
+
code: string;
|
|
13
|
+
redacted: boolean;
|
|
14
|
+
severity: "error" | "info" | "warn";
|
|
15
|
+
path?: string | undefined;
|
|
16
|
+
remediation?: string | undefined;
|
|
17
|
+
}, {
|
|
18
|
+
message: string;
|
|
19
|
+
code: string;
|
|
20
|
+
redacted: boolean;
|
|
21
|
+
severity: "error" | "info" | "warn";
|
|
22
|
+
path?: string | undefined;
|
|
23
|
+
remediation?: string | undefined;
|
|
24
|
+
}>;
|
|
25
|
+
export declare const OmkCommandEnvelopeV1Schema: z.ZodObject<{
|
|
26
|
+
schemaVersion: z.ZodLiteral<"omk.command.v1">;
|
|
27
|
+
command: z.ZodString;
|
|
28
|
+
status: z.ZodEnum<["pass", "warn", "fail"]>;
|
|
29
|
+
runId: z.ZodOptional<z.ZodString>;
|
|
30
|
+
commit: z.ZodOptional<z.ZodString>;
|
|
31
|
+
startedAt: z.ZodString;
|
|
32
|
+
finishedAt: z.ZodString;
|
|
33
|
+
data: z.ZodUnknown;
|
|
34
|
+
diagnostics: z.ZodArray<z.ZodObject<{
|
|
35
|
+
severity: z.ZodEnum<["info", "warn", "error"]>;
|
|
36
|
+
code: z.ZodString;
|
|
37
|
+
message: z.ZodString;
|
|
38
|
+
redacted: z.ZodBoolean;
|
|
39
|
+
remediation: z.ZodOptional<z.ZodString>;
|
|
40
|
+
path: z.ZodOptional<z.ZodString>;
|
|
41
|
+
}, "strip", z.ZodTypeAny, {
|
|
42
|
+
message: string;
|
|
43
|
+
code: string;
|
|
44
|
+
redacted: boolean;
|
|
45
|
+
severity: "error" | "info" | "warn";
|
|
46
|
+
path?: string | undefined;
|
|
47
|
+
remediation?: string | undefined;
|
|
48
|
+
}, {
|
|
49
|
+
message: string;
|
|
50
|
+
code: string;
|
|
51
|
+
redacted: boolean;
|
|
52
|
+
severity: "error" | "info" | "warn";
|
|
53
|
+
path?: string | undefined;
|
|
54
|
+
remediation?: string | undefined;
|
|
55
|
+
}>, "many">;
|
|
56
|
+
evidenceRefs: z.ZodArray<z.ZodObject<{
|
|
57
|
+
schemaVersion: z.ZodOptional<z.ZodLiteral<"omk.evidence.v1">>;
|
|
58
|
+
evidenceId: z.ZodString;
|
|
59
|
+
runId: z.ZodOptional<z.ZodString>;
|
|
60
|
+
path: z.ZodOptional<z.ZodString>;
|
|
61
|
+
}, "strip", z.ZodTypeAny, {
|
|
62
|
+
evidenceId: string;
|
|
63
|
+
path?: string | undefined;
|
|
64
|
+
runId?: string | undefined;
|
|
65
|
+
schemaVersion?: "omk.evidence.v1" | undefined;
|
|
66
|
+
}, {
|
|
67
|
+
evidenceId: string;
|
|
68
|
+
path?: string | undefined;
|
|
69
|
+
runId?: string | undefined;
|
|
70
|
+
schemaVersion?: "omk.evidence.v1" | undefined;
|
|
71
|
+
}>, "many">;
|
|
72
|
+
exitCode: z.ZodNumber;
|
|
73
|
+
}, "strip", z.ZodTypeAny, {
|
|
74
|
+
status: "warn" | "fail" | "pass";
|
|
75
|
+
exitCode: number;
|
|
76
|
+
startedAt: string;
|
|
77
|
+
command: string;
|
|
78
|
+
diagnostics: {
|
|
79
|
+
message: string;
|
|
80
|
+
code: string;
|
|
81
|
+
redacted: boolean;
|
|
82
|
+
severity: "error" | "info" | "warn";
|
|
83
|
+
path?: string | undefined;
|
|
84
|
+
remediation?: string | undefined;
|
|
85
|
+
}[];
|
|
86
|
+
schemaVersion: "omk.command.v1";
|
|
87
|
+
evidenceRefs: {
|
|
88
|
+
evidenceId: string;
|
|
89
|
+
path?: string | undefined;
|
|
90
|
+
runId?: string | undefined;
|
|
91
|
+
schemaVersion?: "omk.evidence.v1" | undefined;
|
|
92
|
+
}[];
|
|
93
|
+
finishedAt: string;
|
|
94
|
+
data?: unknown;
|
|
95
|
+
runId?: string | undefined;
|
|
96
|
+
commit?: string | undefined;
|
|
97
|
+
}, {
|
|
98
|
+
status: "warn" | "fail" | "pass";
|
|
99
|
+
exitCode: number;
|
|
100
|
+
startedAt: string;
|
|
101
|
+
command: string;
|
|
102
|
+
diagnostics: {
|
|
103
|
+
message: string;
|
|
104
|
+
code: string;
|
|
105
|
+
redacted: boolean;
|
|
106
|
+
severity: "error" | "info" | "warn";
|
|
107
|
+
path?: string | undefined;
|
|
108
|
+
remediation?: string | undefined;
|
|
109
|
+
}[];
|
|
110
|
+
schemaVersion: "omk.command.v1";
|
|
111
|
+
evidenceRefs: {
|
|
112
|
+
evidenceId: string;
|
|
113
|
+
path?: string | undefined;
|
|
114
|
+
runId?: string | undefined;
|
|
115
|
+
schemaVersion?: "omk.evidence.v1" | undefined;
|
|
116
|
+
}[];
|
|
117
|
+
finishedAt: string;
|
|
118
|
+
data?: unknown;
|
|
119
|
+
runId?: string | undefined;
|
|
120
|
+
commit?: string | undefined;
|
|
121
|
+
}>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { OMK_COMMAND_SCHEMA_VERSION } from "../version.js";
|
|
3
|
+
import { EvidenceRefSchema } from "./evidence.schema.js";
|
|
4
|
+
export const OmkCommandEnvelopeStatusSchema = z.enum(["pass", "warn", "fail"]);
|
|
5
|
+
export const OmkCommandDiagnosticSchema = z.object({
|
|
6
|
+
severity: z.enum(["info", "warn", "error"]),
|
|
7
|
+
code: z.string().min(1),
|
|
8
|
+
message: z.string().min(1),
|
|
9
|
+
redacted: z.boolean(),
|
|
10
|
+
remediation: z.string().optional(),
|
|
11
|
+
path: z.string().optional(),
|
|
12
|
+
});
|
|
13
|
+
export const OmkCommandEnvelopeV1Schema = z.object({
|
|
14
|
+
schemaVersion: z.literal(OMK_COMMAND_SCHEMA_VERSION),
|
|
15
|
+
command: z.string().min(1),
|
|
16
|
+
status: OmkCommandEnvelopeStatusSchema,
|
|
17
|
+
runId: z.string().min(1).optional(),
|
|
18
|
+
commit: z.string().min(1).optional(),
|
|
19
|
+
startedAt: z.string().min(1),
|
|
20
|
+
finishedAt: z.string().min(1),
|
|
21
|
+
data: z.unknown(),
|
|
22
|
+
diagnostics: z.array(OmkCommandDiagnosticSchema),
|
|
23
|
+
evidenceRefs: z.array(EvidenceRefSchema),
|
|
24
|
+
exitCode: z.number().int().min(0),
|
|
25
|
+
});
|
|
@@ -117,8 +117,8 @@ export declare const OmkEnvelopeSchema: z.ZodObject<{
|
|
|
117
117
|
}>;
|
|
118
118
|
}, "strip", z.ZodTypeAny, {
|
|
119
119
|
status: "failed" | "skipped" | "blocked" | "dry-run" | "partial" | "passed" | "not-applicable";
|
|
120
|
-
command: string;
|
|
121
120
|
ok: boolean;
|
|
121
|
+
command: string;
|
|
122
122
|
errors: {
|
|
123
123
|
message: string;
|
|
124
124
|
code: "CONFIG_INVALID" | "PROVIDER_UNAVAILABLE" | "PROVIDER_AUTH_REQUIRED" | "PROVIDER_CAPABILITY_MISMATCH" | "ROUTE_FALLBACK_TRIGGERED" | "EVIDENCE_MISSING" | "EVIDENCE_FAILED" | "DAG_NODE_BLOCKED" | "RUN_ARTIFACT_MISSING" | "REPLAY_INCOMPLETE" | "SECURITY_POLICY_BLOCKED" | "MCP_UNHEALTHY" | "INTERNAL_ERROR";
|
|
@@ -166,8 +166,8 @@ export declare const OmkEnvelopeSchema: z.ZodObject<{
|
|
|
166
166
|
}[] | undefined;
|
|
167
167
|
}, {
|
|
168
168
|
status: "failed" | "skipped" | "blocked" | "dry-run" | "partial" | "passed" | "not-applicable";
|
|
169
|
-
command: string;
|
|
170
169
|
ok: boolean;
|
|
170
|
+
command: string;
|
|
171
171
|
errors: {
|
|
172
172
|
message: string;
|
|
173
173
|
code: "CONFIG_INVALID" | "PROVIDER_UNAVAILABLE" | "PROVIDER_AUTH_REQUIRED" | "PROVIDER_CAPABILITY_MISMATCH" | "ROUTE_FALLBACK_TRIGGERED" | "EVIDENCE_MISSING" | "EVIDENCE_FAILED" | "DAG_NODE_BLOCKED" | "RUN_ARTIFACT_MISSING" | "REPLAY_INCOMPLETE" | "SECURITY_POLICY_BLOCKED" | "MCP_UNHEALTHY" | "INTERNAL_ERROR";
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const EvidenceBundleArtifactSchema: z.ZodObject<{
|
|
3
|
+
path: z.ZodString;
|
|
4
|
+
sha256: z.ZodString;
|
|
5
|
+
required: z.ZodOptional<z.ZodBoolean>;
|
|
6
|
+
kind: z.ZodOptional<z.ZodEnum<["file", "log", "diff", "metric", "review", "custom"]>>;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
sha256: string;
|
|
9
|
+
path: string;
|
|
10
|
+
kind?: "review" | "file" | "diff" | "log" | "custom" | "metric" | undefined;
|
|
11
|
+
required?: boolean | undefined;
|
|
12
|
+
}, {
|
|
13
|
+
sha256: string;
|
|
14
|
+
path: string;
|
|
15
|
+
kind?: "review" | "file" | "diff" | "log" | "custom" | "metric" | undefined;
|
|
16
|
+
required?: boolean | undefined;
|
|
17
|
+
}>;
|
|
18
|
+
export declare const EvidenceBundleSchema: z.ZodObject<{
|
|
19
|
+
schemaVersion: z.ZodLiteral<"omk.evidence-bundle.v1">;
|
|
20
|
+
runId: z.ZodString;
|
|
21
|
+
nodeId: z.ZodOptional<z.ZodString>;
|
|
22
|
+
commit: z.ZodString;
|
|
23
|
+
provider: z.ZodString;
|
|
24
|
+
model: z.ZodOptional<z.ZodString>;
|
|
25
|
+
runtimeVersion: z.ZodString;
|
|
26
|
+
command: z.ZodObject<{
|
|
27
|
+
value: z.ZodString;
|
|
28
|
+
exitCode: z.ZodNumber;
|
|
29
|
+
}, "strip", z.ZodTypeAny, {
|
|
30
|
+
value: string;
|
|
31
|
+
exitCode: number;
|
|
32
|
+
}, {
|
|
33
|
+
value: string;
|
|
34
|
+
exitCode: number;
|
|
35
|
+
}>;
|
|
36
|
+
changedFiles: z.ZodArray<z.ZodString, "many">;
|
|
37
|
+
diffHash: z.ZodOptional<z.ZodString>;
|
|
38
|
+
artifacts: z.ZodArray<z.ZodObject<{
|
|
39
|
+
path: z.ZodString;
|
|
40
|
+
sha256: z.ZodString;
|
|
41
|
+
required: z.ZodOptional<z.ZodBoolean>;
|
|
42
|
+
kind: z.ZodOptional<z.ZodEnum<["file", "log", "diff", "metric", "review", "custom"]>>;
|
|
43
|
+
}, "strip", z.ZodTypeAny, {
|
|
44
|
+
sha256: string;
|
|
45
|
+
path: string;
|
|
46
|
+
kind?: "review" | "file" | "diff" | "log" | "custom" | "metric" | undefined;
|
|
47
|
+
required?: boolean | undefined;
|
|
48
|
+
}, {
|
|
49
|
+
sha256: string;
|
|
50
|
+
path: string;
|
|
51
|
+
kind?: "review" | "file" | "diff" | "log" | "custom" | "metric" | undefined;
|
|
52
|
+
required?: boolean | undefined;
|
|
53
|
+
}>, "many">;
|
|
54
|
+
verifier: z.ZodObject<{
|
|
55
|
+
verdict: z.ZodEnum<["pass", "warn", "fail"]>;
|
|
56
|
+
version: z.ZodString;
|
|
57
|
+
checkedAt: z.ZodOptional<z.ZodString>;
|
|
58
|
+
}, "strip", z.ZodTypeAny, {
|
|
59
|
+
version: string;
|
|
60
|
+
verdict: "warn" | "fail" | "pass";
|
|
61
|
+
checkedAt?: string | undefined;
|
|
62
|
+
}, {
|
|
63
|
+
version: string;
|
|
64
|
+
verdict: "warn" | "fail" | "pass";
|
|
65
|
+
checkedAt?: string | undefined;
|
|
66
|
+
}>;
|
|
67
|
+
redaction: z.ZodObject<{
|
|
68
|
+
applied: z.ZodBoolean;
|
|
69
|
+
summary: z.ZodString;
|
|
70
|
+
leakedSecretPatterns: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
71
|
+
}, "strip", z.ZodTypeAny, {
|
|
72
|
+
summary: string;
|
|
73
|
+
applied: boolean;
|
|
74
|
+
leakedSecretPatterns?: string[] | undefined;
|
|
75
|
+
}, {
|
|
76
|
+
summary: string;
|
|
77
|
+
applied: boolean;
|
|
78
|
+
leakedSecretPatterns?: string[] | undefined;
|
|
79
|
+
}>;
|
|
80
|
+
evidenceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
81
|
+
schemaVersion: z.ZodOptional<z.ZodLiteral<"omk.evidence.v1">>;
|
|
82
|
+
evidenceId: z.ZodString;
|
|
83
|
+
runId: z.ZodOptional<z.ZodString>;
|
|
84
|
+
path: z.ZodOptional<z.ZodString>;
|
|
85
|
+
}, "strip", z.ZodTypeAny, {
|
|
86
|
+
evidenceId: string;
|
|
87
|
+
path?: string | undefined;
|
|
88
|
+
runId?: string | undefined;
|
|
89
|
+
schemaVersion?: "omk.evidence.v1" | undefined;
|
|
90
|
+
}, {
|
|
91
|
+
evidenceId: string;
|
|
92
|
+
path?: string | undefined;
|
|
93
|
+
runId?: string | undefined;
|
|
94
|
+
schemaVersion?: "omk.evidence.v1" | undefined;
|
|
95
|
+
}>, "many">>;
|
|
96
|
+
decisionRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
97
|
+
schemaVersion: z.ZodOptional<z.ZodLiteral<"omk.decision.v1">>;
|
|
98
|
+
decisionId: z.ZodString;
|
|
99
|
+
runId: z.ZodOptional<z.ZodString>;
|
|
100
|
+
path: z.ZodOptional<z.ZodString>;
|
|
101
|
+
}, "strip", z.ZodTypeAny, {
|
|
102
|
+
decisionId: string;
|
|
103
|
+
path?: string | undefined;
|
|
104
|
+
runId?: string | undefined;
|
|
105
|
+
schemaVersion?: "omk.decision.v1" | undefined;
|
|
106
|
+
}, {
|
|
107
|
+
decisionId: string;
|
|
108
|
+
path?: string | undefined;
|
|
109
|
+
runId?: string | undefined;
|
|
110
|
+
schemaVersion?: "omk.decision.v1" | undefined;
|
|
111
|
+
}>, "many">>;
|
|
112
|
+
}, "strip", z.ZodTypeAny, {
|
|
113
|
+
provider: string;
|
|
114
|
+
command: {
|
|
115
|
+
value: string;
|
|
116
|
+
exitCode: number;
|
|
117
|
+
};
|
|
118
|
+
runId: string;
|
|
119
|
+
schemaVersion: "omk.evidence-bundle.v1";
|
|
120
|
+
artifacts: {
|
|
121
|
+
sha256: string;
|
|
122
|
+
path: string;
|
|
123
|
+
kind?: "review" | "file" | "diff" | "log" | "custom" | "metric" | undefined;
|
|
124
|
+
required?: boolean | undefined;
|
|
125
|
+
}[];
|
|
126
|
+
verifier: {
|
|
127
|
+
version: string;
|
|
128
|
+
verdict: "warn" | "fail" | "pass";
|
|
129
|
+
checkedAt?: string | undefined;
|
|
130
|
+
};
|
|
131
|
+
commit: string;
|
|
132
|
+
redaction: {
|
|
133
|
+
summary: string;
|
|
134
|
+
applied: boolean;
|
|
135
|
+
leakedSecretPatterns?: string[] | undefined;
|
|
136
|
+
};
|
|
137
|
+
changedFiles: string[];
|
|
138
|
+
runtimeVersion: string;
|
|
139
|
+
model?: string | undefined;
|
|
140
|
+
nodeId?: string | undefined;
|
|
141
|
+
evidenceRefs?: {
|
|
142
|
+
evidenceId: string;
|
|
143
|
+
path?: string | undefined;
|
|
144
|
+
runId?: string | undefined;
|
|
145
|
+
schemaVersion?: "omk.evidence.v1" | undefined;
|
|
146
|
+
}[] | undefined;
|
|
147
|
+
decisionRefs?: {
|
|
148
|
+
decisionId: string;
|
|
149
|
+
path?: string | undefined;
|
|
150
|
+
runId?: string | undefined;
|
|
151
|
+
schemaVersion?: "omk.decision.v1" | undefined;
|
|
152
|
+
}[] | undefined;
|
|
153
|
+
diffHash?: string | undefined;
|
|
154
|
+
}, {
|
|
155
|
+
provider: string;
|
|
156
|
+
command: {
|
|
157
|
+
value: string;
|
|
158
|
+
exitCode: number;
|
|
159
|
+
};
|
|
160
|
+
runId: string;
|
|
161
|
+
schemaVersion: "omk.evidence-bundle.v1";
|
|
162
|
+
artifacts: {
|
|
163
|
+
sha256: string;
|
|
164
|
+
path: string;
|
|
165
|
+
kind?: "review" | "file" | "diff" | "log" | "custom" | "metric" | undefined;
|
|
166
|
+
required?: boolean | undefined;
|
|
167
|
+
}[];
|
|
168
|
+
verifier: {
|
|
169
|
+
version: string;
|
|
170
|
+
verdict: "warn" | "fail" | "pass";
|
|
171
|
+
checkedAt?: string | undefined;
|
|
172
|
+
};
|
|
173
|
+
commit: string;
|
|
174
|
+
redaction: {
|
|
175
|
+
summary: string;
|
|
176
|
+
applied: boolean;
|
|
177
|
+
leakedSecretPatterns?: string[] | undefined;
|
|
178
|
+
};
|
|
179
|
+
changedFiles: string[];
|
|
180
|
+
runtimeVersion: string;
|
|
181
|
+
model?: string | undefined;
|
|
182
|
+
nodeId?: string | undefined;
|
|
183
|
+
evidenceRefs?: {
|
|
184
|
+
evidenceId: string;
|
|
185
|
+
path?: string | undefined;
|
|
186
|
+
runId?: string | undefined;
|
|
187
|
+
schemaVersion?: "omk.evidence.v1" | undefined;
|
|
188
|
+
}[] | undefined;
|
|
189
|
+
decisionRefs?: {
|
|
190
|
+
decisionId: string;
|
|
191
|
+
path?: string | undefined;
|
|
192
|
+
runId?: string | undefined;
|
|
193
|
+
schemaVersion?: "omk.decision.v1" | undefined;
|
|
194
|
+
}[] | undefined;
|
|
195
|
+
diffHash?: string | undefined;
|
|
196
|
+
}>;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { OMK_EVIDENCE_BUNDLE_SCHEMA_VERSION } from "../version.js";
|
|
3
|
+
import { DecisionRefSchema } from "./decision.schema.js";
|
|
4
|
+
import { EvidenceRefSchema } from "./evidence.schema.js";
|
|
5
|
+
export const EvidenceBundleArtifactSchema = z.object({
|
|
6
|
+
path: z.string().min(1),
|
|
7
|
+
sha256: z.string().regex(/^[a-f0-9]{64}$/u),
|
|
8
|
+
required: z.boolean().optional(),
|
|
9
|
+
kind: z.enum(["file", "log", "diff", "metric", "review", "custom"]).optional(),
|
|
10
|
+
});
|
|
11
|
+
export const EvidenceBundleSchema = z.object({
|
|
12
|
+
schemaVersion: z.literal(OMK_EVIDENCE_BUNDLE_SCHEMA_VERSION),
|
|
13
|
+
runId: z.string().min(1),
|
|
14
|
+
nodeId: z.string().min(1).optional(),
|
|
15
|
+
commit: z.string().min(1),
|
|
16
|
+
provider: z.string().min(1),
|
|
17
|
+
model: z.string().min(1).optional(),
|
|
18
|
+
runtimeVersion: z.string().min(1),
|
|
19
|
+
command: z.object({
|
|
20
|
+
value: z.string().min(1),
|
|
21
|
+
exitCode: z.number().int(),
|
|
22
|
+
}),
|
|
23
|
+
changedFiles: z.array(z.string()),
|
|
24
|
+
diffHash: z.string().regex(/^[a-f0-9]{64}$/u).optional(),
|
|
25
|
+
artifacts: z.array(EvidenceBundleArtifactSchema).min(1),
|
|
26
|
+
verifier: z.object({
|
|
27
|
+
verdict: z.enum(["pass", "warn", "fail"]),
|
|
28
|
+
version: z.string().min(1),
|
|
29
|
+
checkedAt: z.string().min(1).optional(),
|
|
30
|
+
}),
|
|
31
|
+
redaction: z.object({
|
|
32
|
+
applied: z.boolean(),
|
|
33
|
+
summary: z.string().min(1),
|
|
34
|
+
leakedSecretPatterns: z.array(z.string()).optional(),
|
|
35
|
+
}),
|
|
36
|
+
evidenceRefs: z.array(EvidenceRefSchema).optional(),
|
|
37
|
+
decisionRefs: z.array(DecisionRefSchema).optional(),
|
|
38
|
+
});
|
package/dist/schema/index.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
export * from "./command.schema.js";
|
|
1
2
|
export * from "./decision.schema.js";
|
|
2
3
|
export * from "./envelope.schema.js";
|
|
3
4
|
export * from "./error.schema.js";
|
|
4
5
|
export * from "./evidence.schema.js";
|
|
6
|
+
export * from "./evidence-bundle.schema.js";
|
|
5
7
|
export * from "./provider.schema.js";
|
|
6
8
|
export * from "./proof-bundle.schema.js";
|
|
7
9
|
export * from "./run-manifest.schema.js";
|
package/dist/schema/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
export * from "./command.schema.js";
|
|
1
2
|
export * from "./decision.schema.js";
|
|
2
3
|
export * from "./envelope.schema.js";
|
|
3
4
|
export * from "./error.schema.js";
|
|
4
5
|
export * from "./evidence.schema.js";
|
|
6
|
+
export * from "./evidence-bundle.schema.js";
|
|
5
7
|
export * from "./provider.schema.js";
|
|
6
8
|
export * from "./proof-bundle.schema.js";
|
|
7
9
|
export * from "./run-manifest.schema.js";
|
|
@@ -115,8 +115,8 @@ export declare const ProofBundleSchema: z.ZodObject<{
|
|
|
115
115
|
providerPolicy: string;
|
|
116
116
|
omkVersion: string;
|
|
117
117
|
verdict: "failed" | "partial" | "passed";
|
|
118
|
-
proofId: string;
|
|
119
118
|
runtimeVersion: "v1.2";
|
|
119
|
+
proofId: string;
|
|
120
120
|
scenario: "no-kimi-smoke" | "evidence-block" | "fallback-route" | "dag-dependent-block" | "replay-inspect" | "example-generation" | "doctor-provider" | "contract-version-smoke";
|
|
121
121
|
knownLimitations: string[];
|
|
122
122
|
checksums: Record<string, string>;
|
|
@@ -142,8 +142,8 @@ export declare const ProofBundleSchema: z.ZodObject<{
|
|
|
142
142
|
providerPolicy: string;
|
|
143
143
|
omkVersion: string;
|
|
144
144
|
verdict: "failed" | "partial" | "passed";
|
|
145
|
-
proofId: string;
|
|
146
145
|
runtimeVersion: "v1.2";
|
|
146
|
+
proofId: string;
|
|
147
147
|
scenario: "no-kimi-smoke" | "evidence-block" | "fallback-route" | "dag-dependent-block" | "replay-inspect" | "example-generation" | "doctor-provider" | "contract-version-smoke";
|
|
148
148
|
knownLimitations: string[];
|
|
149
149
|
checksums: Record<string, string>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type ExternalThemeLibraryId = "chalk-animation" | "ink-gradient" | "terminal-kit";
|
|
2
|
+
export interface ExternalThemeLibraryAdapter {
|
|
3
|
+
readonly id: ExternalThemeLibraryId;
|
|
4
|
+
readonly packageName: string;
|
|
5
|
+
readonly repository: string;
|
|
6
|
+
readonly purpose: string;
|
|
7
|
+
readonly defaultEnabled: boolean;
|
|
8
|
+
readonly risk: "safe" | "interactive" | "host-dependent";
|
|
9
|
+
readonly notes: readonly string[];
|
|
10
|
+
}
|
|
11
|
+
export declare const EXTERNAL_THEME_LIBRARY_ADAPTERS: readonly ExternalThemeLibraryAdapter[];
|
|
12
|
+
export interface ChalkAnimationController {
|
|
13
|
+
stop(): ChalkAnimationController;
|
|
14
|
+
start(): ChalkAnimationController;
|
|
15
|
+
replace(text: string): ChalkAnimationController;
|
|
16
|
+
}
|
|
17
|
+
export type ChalkAnimationEffect = "rainbow" | "pulse" | "glitch" | "radar" | "neon" | "karaoke";
|
|
18
|
+
export type ChalkAnimationModule = Record<ChalkAnimationEffect, (text: string, speed?: number) => ChalkAnimationController>;
|
|
19
|
+
export declare function loadChalkAnimation(): Promise<ChalkAnimationModule>;
|
|
20
|
+
export interface InkGradientProps {
|
|
21
|
+
readonly children: unknown;
|
|
22
|
+
readonly name?: string;
|
|
23
|
+
readonly colors?: readonly unknown[];
|
|
24
|
+
}
|
|
25
|
+
export type InkGradientComponent = (props: InkGradientProps) => unknown;
|
|
26
|
+
export declare function loadInkGradientComponent(): Promise<InkGradientComponent>;
|
|
27
|
+
export declare function renderExternalThemeLibrarySummary(): string;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
const lazyImport = new Function("specifier", "return import(specifier)");
|
|
2
|
+
export const EXTERNAL_THEME_LIBRARY_ADAPTERS = [
|
|
3
|
+
{
|
|
4
|
+
id: "chalk-animation",
|
|
5
|
+
packageName: "chalk-animation",
|
|
6
|
+
repository: "https://github.com/bokub/chalk-animation",
|
|
7
|
+
purpose: "Optional terminal text animation effects for splash/progress surfaces.",
|
|
8
|
+
defaultEnabled: false,
|
|
9
|
+
risk: "interactive",
|
|
10
|
+
notes: [
|
|
11
|
+
"Lazy-load only; the package patches console methods on import.",
|
|
12
|
+
"Use only for explicit TTY animation flows, not structured renderer output.",
|
|
13
|
+
],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "ink-gradient",
|
|
17
|
+
packageName: "ink-gradient",
|
|
18
|
+
repository: "https://github.com/sindresorhus/ink-gradient",
|
|
19
|
+
purpose: "Ink/React gradient component for future React-based TUI surfaces.",
|
|
20
|
+
defaultEnabled: false,
|
|
21
|
+
risk: "safe",
|
|
22
|
+
notes: [
|
|
23
|
+
"Available as an adapter; current non-Ink renderers keep using ANSI-safe gradient-string paths.",
|
|
24
|
+
"Requires an Ink render host before being used in live CLI output.",
|
|
25
|
+
],
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
id: "terminal-kit",
|
|
29
|
+
packageName: "terminal-kit",
|
|
30
|
+
repository: "https://github.com/cronvel/terminal-kit",
|
|
31
|
+
purpose: "Terminal capability bridge for raw keys, Ctrl+V-style paste hooks, and text clipboard access.",
|
|
32
|
+
defaultEnabled: false,
|
|
33
|
+
risk: "host-dependent",
|
|
34
|
+
notes: [
|
|
35
|
+
"Clipboard support depends on terminal/OS capabilities and external clipboard tools.",
|
|
36
|
+
"Image screenshot capture remains handled by OMK's platform-specific screenshot bridge.",
|
|
37
|
+
],
|
|
38
|
+
},
|
|
39
|
+
];
|
|
40
|
+
export async function loadChalkAnimation() {
|
|
41
|
+
const mod = await import("chalk-animation");
|
|
42
|
+
return mod.default;
|
|
43
|
+
}
|
|
44
|
+
export async function loadInkGradientComponent() {
|
|
45
|
+
const mod = await lazyImport("ink-gradient");
|
|
46
|
+
return mod.default;
|
|
47
|
+
}
|
|
48
|
+
export function renderExternalThemeLibrarySummary() {
|
|
49
|
+
return EXTERNAL_THEME_LIBRARY_ADAPTERS
|
|
50
|
+
.map((adapter) => `${adapter.id}: ${adapter.purpose} (${adapter.defaultEnabled ? "default" : "opt-in"})`)
|
|
51
|
+
.join("\n");
|
|
52
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type GradientPreset = "atlas" | "cristal" | "teen" | "mind" | "morning" | "vice" | "passion" | "fruit" | "instagram" | "retro" | "summer" | "rainbow" | "pastel";
|
|
2
|
+
export type ChalkKeyframeEffect = "rainbow" | "pulse" | "glitch" | "radar" | "neon" | "karaoke";
|
|
3
|
+
export declare function renderGradientPreset(text: string, preset: GradientPreset, options?: {
|
|
4
|
+
noColor?: boolean;
|
|
5
|
+
}): string;
|
|
6
|
+
export declare function renderInkGradientFallback(text: string, preset?: GradientPreset, options?: {
|
|
7
|
+
noColor?: boolean;
|
|
8
|
+
}): string;
|
|
9
|
+
export declare function renderChalkAnimationKeyframe(text: string, effect?: ChalkKeyframeEffect, frame?: number, options?: {
|
|
10
|
+
noColor?: boolean;
|
|
11
|
+
}): string;
|
|
12
|
+
export declare function renderTerminalKitCapabilityBadge(text: string): string;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import gradientString from "gradient-string";
|
|
2
|
+
import { style } from "./colors.js";
|
|
3
|
+
import { shouldUseAnsiColor } from "../brand/theme.js";
|
|
4
|
+
import { getTerminalKitBridgeCapabilities } from "../util/terminal-kit-bridge.js";
|
|
5
|
+
function gradientPresetFn(name) {
|
|
6
|
+
const fn = gradientString[name];
|
|
7
|
+
return typeof fn === "function" ? fn : gradientString.rainbow;
|
|
8
|
+
}
|
|
9
|
+
export function renderGradientPreset(text, preset, options = {}) {
|
|
10
|
+
if (options.noColor || !shouldUseAnsiColor())
|
|
11
|
+
return text;
|
|
12
|
+
return gradientPresetFn(preset)(text);
|
|
13
|
+
}
|
|
14
|
+
export function renderInkGradientFallback(text, preset = "pastel", options = {}) {
|
|
15
|
+
// ink-gradient renders the same gradient-string presets inside Ink/React.
|
|
16
|
+
// Non-Ink OMK surfaces use this static fallback while the React component is
|
|
17
|
+
// exposed through external-theme-adapters for future Ink render hosts.
|
|
18
|
+
return renderGradientPreset(text, preset, options);
|
|
19
|
+
}
|
|
20
|
+
export function renderChalkAnimationKeyframe(text, effect = "rainbow", frame = 0, options = {}) {
|
|
21
|
+
if (options.noColor || !shouldUseAnsiColor())
|
|
22
|
+
return text;
|
|
23
|
+
switch (effect) {
|
|
24
|
+
case "pulse":
|
|
25
|
+
return frame % 2 === 0 ? style.redBold(text) : style.whiteBold(text);
|
|
26
|
+
case "glitch":
|
|
27
|
+
return frame % 3 === 0 ? style.cyanBold(text.replace(/[A-Z]/g, (ch) => `${ch}·`)) : style.hotPink(text);
|
|
28
|
+
case "radar":
|
|
29
|
+
return renderGradientPreset(text, "cristal", options);
|
|
30
|
+
case "neon":
|
|
31
|
+
return frame % 2 === 0 ? style.hotPink(text) : style.purpleBold(text);
|
|
32
|
+
case "karaoke":
|
|
33
|
+
return renderGradientPreset(text, "summer", options);
|
|
34
|
+
case "rainbow":
|
|
35
|
+
default:
|
|
36
|
+
return renderGradientPreset(text, "rainbow", options);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export function renderTerminalKitCapabilityBadge(text) {
|
|
40
|
+
const caps = getTerminalKitBridgeCapabilities();
|
|
41
|
+
const badge = caps.available
|
|
42
|
+
? caps.ctrlVPasteKey && caps.textClipboard
|
|
43
|
+
? "tk:keys+clip"
|
|
44
|
+
: "tk:loaded"
|
|
45
|
+
: "tk:off";
|
|
46
|
+
return `${style.cyanBold(`[${badge}]`)} ${text}`;
|
|
47
|
+
}
|
package/dist/theme/parallel.js
CHANGED
|
@@ -110,7 +110,8 @@ export function omkCliHero(footer) {
|
|
|
110
110
|
: "OMK//CONTROL · neon grid · evidence loop · telemetry bus";
|
|
111
111
|
const heroLines = [
|
|
112
112
|
...renderFigletTitleLines("OMK", [BRAND_HEX.cyan, BRAND_HEX.purple, BRAND_HEX.magenta, BRAND_HEX.mint]),
|
|
113
|
-
style.creamBold("
|
|
113
|
+
style.creamBold("omk"),
|
|
114
|
+
style.gray("open-multi-agent-kit"),
|
|
114
115
|
style.blueBold(getActiveBrandConsoleLine()),
|
|
115
116
|
style.phosphorDim(controlLine),
|
|
116
117
|
style.phosphorDim("goal-scoped MCP · skills · hooks · worktrees · replay · memory"),
|
|
@@ -122,7 +123,7 @@ export function omkCliHero(footer) {
|
|
|
122
123
|
if (footer) {
|
|
123
124
|
heroLines.push("", style.gray(footer));
|
|
124
125
|
}
|
|
125
|
-
return box(heroLines, "
|
|
126
|
+
return box(heroLines, "omk — open-multi-agent-kit");
|
|
126
127
|
}
|
|
127
128
|
export function omkMetaBox(meta) {
|
|
128
129
|
const metaLines = [];
|
|
@@ -4,6 +4,10 @@ export interface TerminalFrameRendererOptions {
|
|
|
4
4
|
height?: number;
|
|
5
5
|
write?: (chunk: string) => void;
|
|
6
6
|
clear?: () => void;
|
|
7
|
+
/** When true (default on main screen), avoid CSI H / CSI 2J which snap the
|
|
8
|
+
* terminal scrollback to the top on drag/scroll. Alternate-screen users can
|
|
9
|
+
* opt out via OMK_TUI_ALT_SCREEN=1. */
|
|
10
|
+
scrollSafe?: boolean;
|
|
7
11
|
}
|
|
8
12
|
export declare class TerminalFrameRenderer {
|
|
9
13
|
private prevLines;
|
|
@@ -11,9 +15,13 @@ export declare class TerminalFrameRenderer {
|
|
|
11
15
|
height?: number;
|
|
12
16
|
private readonly write;
|
|
13
17
|
private readonly clearFrame;
|
|
18
|
+
private readonly scrollSafe;
|
|
14
19
|
constructor(mode?: TuiRenderMode, height?: number);
|
|
15
20
|
constructor(options: TerminalFrameRendererOptions);
|
|
16
21
|
render(frame: string): void;
|
|
22
|
+
private renderFull;
|
|
23
|
+
private renderDiffScrollSafe;
|
|
24
|
+
private renderDiffAltScreen;
|
|
17
25
|
clear(): void;
|
|
18
26
|
}
|
|
19
|
-
export declare function clearTerminalScreen(write?: (chunk: string) => void): void;
|
|
27
|
+
export declare function clearTerminalScreen(write?: (chunk: string) => void, scrollSafe?: boolean): void;
|