@vraxis/agent-v 0.4.0
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 +61 -0
- package/ARCHITECTURE.md +148 -0
- package/CHANGELOG.md +25 -0
- package/LICENSE +21 -0
- package/README.md +237 -0
- package/compatibility.json +41 -0
- package/dist/adapters/ai-sdk/index.d.ts +46 -0
- package/dist/adapters/ai-sdk/index.d.ts.map +1 -0
- package/dist/adapters/ai-sdk/index.js +383 -0
- package/dist/adapters/ai-sdk/index.js.map +1 -0
- package/dist/adapters/local-cli/definitions.d.ts +22 -0
- package/dist/adapters/local-cli/definitions.d.ts.map +1 -0
- package/dist/adapters/local-cli/definitions.js +72 -0
- package/dist/adapters/local-cli/definitions.js.map +1 -0
- package/dist/adapters/local-cli/engine.d.ts +26 -0
- package/dist/adapters/local-cli/engine.d.ts.map +1 -0
- package/dist/adapters/local-cli/engine.js +200 -0
- package/dist/adapters/local-cli/engine.js.map +1 -0
- package/dist/adapters/local-cli/index.d.ts +6 -0
- package/dist/adapters/local-cli/index.d.ts.map +1 -0
- package/dist/adapters/local-cli/index.js +6 -0
- package/dist/adapters/local-cli/index.js.map +1 -0
- package/dist/adapters/local-cli/parsing.d.ts +7 -0
- package/dist/adapters/local-cli/parsing.d.ts.map +1 -0
- package/dist/adapters/local-cli/parsing.js +95 -0
- package/dist/adapters/local-cli/parsing.js.map +1 -0
- package/dist/adapters/local-cli/process.d.ts +12 -0
- package/dist/adapters/local-cli/process.d.ts.map +1 -0
- package/dist/adapters/local-cli/process.js +19 -0
- package/dist/adapters/local-cli/process.js.map +1 -0
- package/dist/adapters/local-cli/store.d.ts +11 -0
- package/dist/adapters/local-cli/store.d.ts.map +1 -0
- package/dist/adapters/local-cli/store.js +11 -0
- package/dist/adapters/local-cli/store.js.map +1 -0
- package/dist/adapters/ollama/index.d.ts +45 -0
- package/dist/adapters/ollama/index.d.ts.map +1 -0
- package/dist/adapters/ollama/index.js +155 -0
- package/dist/adapters/ollama/index.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +116 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/agent-v.d.ts +29 -0
- package/dist/core/agent-v.d.ts.map +1 -0
- package/dist/core/agent-v.js +153 -0
- package/dist/core/agent-v.js.map +1 -0
- package/dist/core/config.d.ts +31 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +21 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/contracts.d.ts +135 -0
- package/dist/core/contracts.d.ts.map +1 -0
- package/dist/core/contracts.js +2 -0
- package/dist/core/contracts.js.map +1 -0
- package/dist/core/errors.d.ts +12 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +27 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/events.d.ts +74 -0
- package/dist/core/events.d.ts.map +1 -0
- package/dist/core/events.js +14 -0
- package/dist/core/events.js.map +1 -0
- package/dist/core/extensions.d.ts +80 -0
- package/dist/core/extensions.d.ts.map +1 -0
- package/dist/core/extensions.js +77 -0
- package/dist/core/extensions.js.map +1 -0
- package/dist/core/index.d.ts +12 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +12 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/memory.d.ts +15 -0
- package/dist/core/memory.d.ts.map +1 -0
- package/dist/core/memory.js +21 -0
- package/dist/core/memory.js.map +1 -0
- package/dist/core/output.d.ts +10 -0
- package/dist/core/output.d.ts.map +1 -0
- package/dist/core/output.js +15 -0
- package/dist/core/output.js.map +1 -0
- package/dist/core/registry.d.ts +13 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +29 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/types.d.ts +141 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +21 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/version.d.ts +3 -0
- package/dist/core/version.d.ts.map +1 -0
- package/dist/core/version.js +3 -0
- package/dist/core/version.js.map +1 -0
- package/dist/node/doctor.d.ts +50 -0
- package/dist/node/doctor.d.ts.map +1 -0
- package/dist/node/doctor.js +121 -0
- package/dist/node/doctor.js.map +1 -0
- package/dist/node/index.d.ts +26 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +84 -0
- package/dist/node/index.js.map +1 -0
- package/dist/node/skills.d.ts +12 -0
- package/dist/node/skills.d.ts.map +1 -0
- package/dist/node/skills.js +96 -0
- package/dist/node/skills.js.map +1 -0
- package/dist/testing/index.d.ts +25 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +33 -0
- package/dist/testing/index.js.map +1 -0
- package/examples/approved-tool.ts +56 -0
- package/examples/basic-ai-sdk.ts +29 -0
- package/examples/custom-model-resolver.ts +14 -0
- package/examples/filesystem-skill.ts +12 -0
- package/examples/local-cli.ts +28 -0
- package/examples/ollama.ts +15 -0
- package/examples/sessions-and-events.ts +18 -0
- package/examples/smoke.ts +35 -0
- package/examples/tsconfig.json +16 -0
- package/llms.txt +13 -0
- package/package.json +97 -0
- package/skills/agent-v/SKILL.md +39 -0
- package/skills/agent-v/references/integration-patterns.md +57 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { AgentVError } from "./errors.js";
|
|
2
|
+
export class EngineRegistry {
|
|
3
|
+
engines = new Map();
|
|
4
|
+
register(engine) {
|
|
5
|
+
if (this.engines.has(engine.descriptor.id))
|
|
6
|
+
throw new Error(`Engine ${engine.descriptor.id} is already registered.`);
|
|
7
|
+
this.engines.set(engine.descriptor.id, engine);
|
|
8
|
+
return this;
|
|
9
|
+
}
|
|
10
|
+
get(id) {
|
|
11
|
+
return this.engines.get(id);
|
|
12
|
+
}
|
|
13
|
+
require(id, kind) {
|
|
14
|
+
const engine = this.engines.get(id);
|
|
15
|
+
if (!engine || (kind && engine.descriptor.kind !== kind)) {
|
|
16
|
+
throw new AgentVError("engine-unavailable", `No ${kind ?? "agent"} engine named ${id} is registered.`);
|
|
17
|
+
}
|
|
18
|
+
return engine;
|
|
19
|
+
}
|
|
20
|
+
find(kind, capabilities = []) {
|
|
21
|
+
return [...this.engines.values()]
|
|
22
|
+
.map((engine) => engine.descriptor)
|
|
23
|
+
.filter((descriptor) => descriptor.kind === kind && capabilities.every((capability) => descriptor.capabilities.includes(capability)));
|
|
24
|
+
}
|
|
25
|
+
list() {
|
|
26
|
+
return [...this.engines.values()].map((engine) => engine.descriptor);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAM1C,MAAM,OAAO,cAAc;IACR,OAAO,GAAG,IAAI,GAAG,EAAqB,CAAC;IAExD,QAAQ,CAAC,MAAiB;QACxB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,CAAC,UAAU,CAAC,EAAE,yBAAyB,CAAC,CAAC;QACrH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,CAAkC,EAAU,EAAE,IAAiB;QACpE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,WAAW,CAAC,oBAAoB,EAAE,MAAM,IAAI,IAAI,OAAO,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;QACzG,CAAC;QACD,OAAO,MAAW,CAAC;IACrB,CAAC;IAED,IAAI,CAAC,IAAgB,EAAE,eAA2C,EAAE;QAClE,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;aAC9B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;aAClC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC1I,CAAC;IAED,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACvE,CAAC;CACF"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
export type JsonPrimitive = string | number | boolean | null;
|
|
2
|
+
export type JsonValue = JsonPrimitive | JsonValue[] | {
|
|
3
|
+
[key: string]: JsonValue;
|
|
4
|
+
};
|
|
5
|
+
export type JsonObject = {
|
|
6
|
+
[key: string]: JsonValue;
|
|
7
|
+
};
|
|
8
|
+
export type EngineKind = "structured-model" | "tool-agent" | "coding-runtime";
|
|
9
|
+
export type BuiltInCapability = "structured-output" | "streaming" | "tools" | "tool-approval" | "tool-filtering" | "sessions" | "resumable-sessions" | "local-workspace" | "read-only-workspace" | "workspace-write" | "skills" | "artifacts" | "citations";
|
|
10
|
+
export type AgentCapability = BuiltInCapability | (string & {});
|
|
11
|
+
export interface EngineDescriptor {
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
kind: EngineKind;
|
|
15
|
+
version?: string;
|
|
16
|
+
provider?: string;
|
|
17
|
+
model?: string;
|
|
18
|
+
capabilities: readonly AgentCapability[];
|
|
19
|
+
}
|
|
20
|
+
export interface SourceAnchor {
|
|
21
|
+
kind: "page" | "epub-cfi" | "text-range" | "line-range" | "custom";
|
|
22
|
+
value: string;
|
|
23
|
+
quote?: string;
|
|
24
|
+
metadata?: JsonObject;
|
|
25
|
+
}
|
|
26
|
+
export interface ContextArtifact {
|
|
27
|
+
id: string;
|
|
28
|
+
uri: string;
|
|
29
|
+
mediaType: string;
|
|
30
|
+
title?: string;
|
|
31
|
+
content?: string;
|
|
32
|
+
anchor?: SourceAnchor;
|
|
33
|
+
metadata?: JsonObject;
|
|
34
|
+
}
|
|
35
|
+
export interface Citation {
|
|
36
|
+
artifactId: string;
|
|
37
|
+
label: string;
|
|
38
|
+
anchor?: SourceAnchor;
|
|
39
|
+
}
|
|
40
|
+
export interface AgentMessage {
|
|
41
|
+
role: "system" | "user" | "assistant";
|
|
42
|
+
parts: readonly AgentContentPart[];
|
|
43
|
+
citations?: Citation[];
|
|
44
|
+
metadata?: JsonObject;
|
|
45
|
+
}
|
|
46
|
+
export type AgentContentPart = {
|
|
47
|
+
type: "text";
|
|
48
|
+
text: string;
|
|
49
|
+
} | {
|
|
50
|
+
type: "json";
|
|
51
|
+
value: JsonValue;
|
|
52
|
+
} | {
|
|
53
|
+
type: "artifact";
|
|
54
|
+
artifactId: string;
|
|
55
|
+
} | {
|
|
56
|
+
type: "file";
|
|
57
|
+
uri: string;
|
|
58
|
+
mediaType: string;
|
|
59
|
+
name?: string;
|
|
60
|
+
} | {
|
|
61
|
+
type: "image";
|
|
62
|
+
uri: string;
|
|
63
|
+
mediaType?: string;
|
|
64
|
+
alt?: string;
|
|
65
|
+
};
|
|
66
|
+
export interface AgentInput {
|
|
67
|
+
prompt: string;
|
|
68
|
+
instructions?: string;
|
|
69
|
+
messages?: readonly AgentMessage[];
|
|
70
|
+
artifacts?: readonly ContextArtifact[];
|
|
71
|
+
}
|
|
72
|
+
/** Host-owned identity, limits, and correlation data required by every execution. */
|
|
73
|
+
export interface RunContext {
|
|
74
|
+
runId?: string;
|
|
75
|
+
sessionId?: string;
|
|
76
|
+
abortSignal?: AbortSignal;
|
|
77
|
+
metadata?: JsonObject;
|
|
78
|
+
scope: ExecutionScope;
|
|
79
|
+
traceId?: string;
|
|
80
|
+
idempotencyKey?: string;
|
|
81
|
+
deadline?: string;
|
|
82
|
+
budget?: RunBudget;
|
|
83
|
+
credentialRef?: string;
|
|
84
|
+
engineOptions?: JsonObject;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Authority and isolation boundary for a run.
|
|
88
|
+
* Store implementations must isolate at least tenant, project, principal, and engagement.
|
|
89
|
+
*/
|
|
90
|
+
export interface ExecutionScope {
|
|
91
|
+
tenantId: string;
|
|
92
|
+
projectId: string;
|
|
93
|
+
principalId: string;
|
|
94
|
+
engagementId?: string;
|
|
95
|
+
roles: readonly string[];
|
|
96
|
+
permissions: readonly string[];
|
|
97
|
+
dataClassification: "public" | "internal" | "confidential" | "restricted";
|
|
98
|
+
}
|
|
99
|
+
/** Creates a wildcard-permission scope for genuinely single-user local applications. */
|
|
100
|
+
export declare function localExecutionScope(projectId: string, principalId?: string): ExecutionScope;
|
|
101
|
+
/** Validates the structural invariants required for execution isolation. */
|
|
102
|
+
export declare function assertExecutionScope(scope: ExecutionScope): void;
|
|
103
|
+
export declare function textMessage(role: AgentMessage["role"], text: string): AgentMessage;
|
|
104
|
+
export interface RunBudget {
|
|
105
|
+
maxTokens?: number;
|
|
106
|
+
maxCostUsd?: number;
|
|
107
|
+
maxDurationMs?: number;
|
|
108
|
+
}
|
|
109
|
+
export interface TokenUsage {
|
|
110
|
+
input?: number;
|
|
111
|
+
output?: number;
|
|
112
|
+
total?: number;
|
|
113
|
+
}
|
|
114
|
+
/** Auditable identity of the adapter, provider/model, and runtime used for a run. */
|
|
115
|
+
export interface RunProvenance {
|
|
116
|
+
engineId: string;
|
|
117
|
+
adapterStrategy: string;
|
|
118
|
+
provider?: string;
|
|
119
|
+
model?: string;
|
|
120
|
+
runtime?: string;
|
|
121
|
+
runtimeVersion?: string;
|
|
122
|
+
}
|
|
123
|
+
export type FailureCode = "authentication-required" | "cancelled" | "empty-response" | "engine-unavailable" | "invalid-json" | "invocation-failed" | "output-invalid" | "permission-denied" | "configuration-invalid" | "budget-exceeded" | "session-conflict" | "timeout" | "tool-failed" | "unsupported-capability";
|
|
124
|
+
export interface SafeFailure {
|
|
125
|
+
code: FailureCode;
|
|
126
|
+
message: string;
|
|
127
|
+
retryable: boolean;
|
|
128
|
+
cause?: unknown;
|
|
129
|
+
}
|
|
130
|
+
/** Discovery and bounded-probe evidence for a local coding runtime. */
|
|
131
|
+
export interface RuntimeReadiness {
|
|
132
|
+
runtimeId: string;
|
|
133
|
+
availability: "missing" | "installed" | "setup-required";
|
|
134
|
+
verification: "unverified" | "ready" | "failed" | "not-applicable";
|
|
135
|
+
version?: string;
|
|
136
|
+
checkedAt?: string;
|
|
137
|
+
durationMs?: number;
|
|
138
|
+
failure?: Omit<SafeFailure, "cause">;
|
|
139
|
+
detail: string;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAC7D,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,SAAS,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AACnF,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEtD,MAAM,MAAM,UAAU,GAAG,kBAAkB,GAAG,YAAY,GAAG,gBAAgB,CAAC;AAC9E,MAAM,MAAM,iBAAiB,GACzB,mBAAmB,GACnB,WAAW,GACX,OAAO,GACP,eAAe,GACf,gBAAgB,GAChB,UAAU,GACV,oBAAoB,GACpB,iBAAiB,GACjB,qBAAqB,GACrB,iBAAiB,GACjB,QAAQ,GACR,WAAW,GACX,WAAW,CAAC;AAChB,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEhE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,SAAS,eAAe,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,YAAY,GAAG,YAAY,GAAG,QAAQ,CAAC;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACnC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAErE,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACnC,SAAS,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;CACxC;AAED,qFAAqF;AACrF,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,UAAU,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,kBAAkB,EAAE,QAAQ,GAAG,UAAU,GAAG,cAAc,GAAG,YAAY,CAAC;CAC3E;AAED,wFAAwF;AACxF,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,SAAe,GAAG,cAAc,CAEjG;AAED,4EAA4E;AAC5E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAOhE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAElF;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qFAAqF;AACrF,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,WAAW,GACnB,yBAAyB,GACzB,WAAW,GACX,gBAAgB,GAChB,oBAAoB,GACpB,cAAc,GACd,mBAAmB,GACnB,gBAAgB,GAChB,mBAAmB,GACnB,uBAAuB,GACvB,iBAAiB,GACjB,kBAAkB,GAClB,SAAS,GACT,aAAa,GACb,wBAAwB,CAAC;AAE7B,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,uEAAuE;AACvE,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,SAAS,GAAG,WAAW,GAAG,gBAAgB,CAAC;IACzD,YAAY,EAAE,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,gBAAgB,CAAC;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** Creates a wildcard-permission scope for genuinely single-user local applications. */
|
|
2
|
+
export function localExecutionScope(projectId, principalId = "local-user") {
|
|
3
|
+
return { tenantId: "local", projectId, principalId, roles: ["owner"], permissions: ["*"], dataClassification: "internal" };
|
|
4
|
+
}
|
|
5
|
+
/** Validates the structural invariants required for execution isolation. */
|
|
6
|
+
export function assertExecutionScope(scope) {
|
|
7
|
+
for (const [field, value] of [["tenantId", scope?.tenantId], ["projectId", scope?.projectId], ["principalId", scope?.principalId]]) {
|
|
8
|
+
if (typeof value !== "string" || !value.trim())
|
|
9
|
+
throw new Error(`Execution scope ${field} must be a non-empty string.`);
|
|
10
|
+
}
|
|
11
|
+
if (!Array.isArray(scope.roles) || !scope.roles.every((role) => typeof role === "string" && role.length > 0))
|
|
12
|
+
throw new Error("Execution scope roles must contain non-empty strings.");
|
|
13
|
+
if (!Array.isArray(scope.permissions) || !scope.permissions.every((permission) => typeof permission === "string" && permission.length > 0))
|
|
14
|
+
throw new Error("Execution scope permissions must contain non-empty strings.");
|
|
15
|
+
if (!["public", "internal", "confidential", "restricted"].includes(scope.dataClassification))
|
|
16
|
+
throw new Error("Execution scope dataClassification is invalid.");
|
|
17
|
+
}
|
|
18
|
+
export function textMessage(role, text) {
|
|
19
|
+
return { role, parts: [{ type: "text", text }] };
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAwGA,wFAAwF;AACxF,MAAM,UAAU,mBAAmB,CAAC,SAAiB,EAAE,WAAW,GAAG,YAAY;IAC/E,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC;AAC7H,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,oBAAoB,CAAC,KAAqB;IACxD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,WAAW,CAAC,CAAU,EAAE,CAAC;QAC5I,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,8BAA8B,CAAC,CAAC;IAC1H,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IACvL,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IAC3N,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;AAClK,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAA0B,EAAE,IAAY;IAClE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/core/version.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,eAAO,MAAM,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/core/version.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type RuntimeReadiness } from "../core/index.js";
|
|
2
|
+
export interface DoctorDependency {
|
|
3
|
+
name: string;
|
|
4
|
+
installed: boolean;
|
|
5
|
+
version?: string;
|
|
6
|
+
purpose: string;
|
|
7
|
+
}
|
|
8
|
+
export interface DoctorOllamaReadiness {
|
|
9
|
+
availability: "ready" | "unreachable" | "setup-required" | "dependency-missing";
|
|
10
|
+
version?: string;
|
|
11
|
+
models: readonly string[];
|
|
12
|
+
detail: string;
|
|
13
|
+
failure?: {
|
|
14
|
+
code: string;
|
|
15
|
+
message: string;
|
|
16
|
+
retryable: boolean;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export interface DoctorIssue {
|
|
20
|
+
severity: "info" | "warning" | "error";
|
|
21
|
+
component: string;
|
|
22
|
+
message: string;
|
|
23
|
+
remediation?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface AgentVDoctorReport {
|
|
26
|
+
schemaVersion: 1;
|
|
27
|
+
packageVersion: string;
|
|
28
|
+
checkedAt: string;
|
|
29
|
+
dependencies: readonly DoctorDependency[];
|
|
30
|
+
runtimes: readonly RuntimeReadiness[];
|
|
31
|
+
ollama: DoctorOllamaReadiness;
|
|
32
|
+
issues: readonly DoctorIssue[];
|
|
33
|
+
ok: boolean;
|
|
34
|
+
}
|
|
35
|
+
export interface AgentVDoctorOptions {
|
|
36
|
+
runtimeIds?: readonly string[];
|
|
37
|
+
probe?: boolean;
|
|
38
|
+
ollamaBaseURL?: string;
|
|
39
|
+
ollamaModel?: string;
|
|
40
|
+
}
|
|
41
|
+
export interface AgentVDoctorServices {
|
|
42
|
+
packageVersion(name: string): Promise<string | undefined>;
|
|
43
|
+
inspectRuntime(runtimeId: string): Promise<RuntimeReadiness>;
|
|
44
|
+
probeRuntime(runtimeId: string): Promise<RuntimeReadiness>;
|
|
45
|
+
inspectOllama(options: {
|
|
46
|
+
baseURL?: string;
|
|
47
|
+
}): Promise<DoctorOllamaReadiness>;
|
|
48
|
+
}
|
|
49
|
+
export declare function doctorAgentV(options?: AgentVDoctorOptions, services?: AgentVDoctorServices): Promise<AgentVDoctorReport>;
|
|
50
|
+
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/node/doctor.ts"],"names":[],"mappings":"AAOA,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE1E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,OAAO,GAAG,aAAa,GAAG,gBAAgB,GAAG,oBAAoB,CAAC;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;CACjE;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,CAAC,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC1C,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACtC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IAC/B,EAAE,EAAE,OAAO,CAAC;CACb;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC1D,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7D,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC3D,aAAa,CAAC,OAAO,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAC9E;AA+CD,wBAAsB,YAAY,CAAC,OAAO,GAAE,mBAAwB,EAAE,QAAQ,GAAE,oBAAwC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA+DrJ"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
import { dirname, join, parse } from "node:path";
|
|
4
|
+
import { LocalCliRuntimeEngine, builtInRuntimes, } from "../adapters/local-cli/index.js";
|
|
5
|
+
import { AGENT_V_VERSION } from "../core/index.js";
|
|
6
|
+
async function packageVersion(name) {
|
|
7
|
+
const require = createRequire(import.meta.url);
|
|
8
|
+
let current;
|
|
9
|
+
try {
|
|
10
|
+
current = dirname(require.resolve(name));
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
const root = parse(current).root;
|
|
16
|
+
while (current !== root) {
|
|
17
|
+
try {
|
|
18
|
+
const manifest = JSON.parse(await readFile(join(current, "package.json"), "utf8"));
|
|
19
|
+
if (manifest.name === name && typeof manifest.version === "string")
|
|
20
|
+
return manifest.version;
|
|
21
|
+
}
|
|
22
|
+
catch { /* Continue toward the filesystem root. */ }
|
|
23
|
+
current = dirname(current);
|
|
24
|
+
}
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
async function inspectOllama(options) {
|
|
28
|
+
try {
|
|
29
|
+
const adapter = await import("../adapters/ollama/index.js");
|
|
30
|
+
return adapter.inspectOllama(options);
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
const missing = error instanceof Error && error.code === "ERR_MODULE_NOT_FOUND";
|
|
34
|
+
return {
|
|
35
|
+
availability: missing ? "dependency-missing" : "unreachable",
|
|
36
|
+
models: [],
|
|
37
|
+
detail: missing ? "The optional Ollama adapter dependencies are not installed." : "The Ollama adapter could not be loaded.",
|
|
38
|
+
failure: {
|
|
39
|
+
code: missing ? "dependency-missing" : "engine-unavailable",
|
|
40
|
+
message: missing ? "Install ai and ai-sdk-ollama to use @vraxis/agent-v/ollama." : "The Ollama adapter could not be loaded.",
|
|
41
|
+
retryable: false,
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function defaultServices() {
|
|
47
|
+
const local = new LocalCliRuntimeEngine();
|
|
48
|
+
return {
|
|
49
|
+
packageVersion,
|
|
50
|
+
inspectRuntime: (runtimeId) => local.inspect(runtimeId),
|
|
51
|
+
probeRuntime: (runtimeId) => local.probe(runtimeId),
|
|
52
|
+
inspectOllama,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export async function doctorAgentV(options = {}, services = defaultServices()) {
|
|
56
|
+
if (options.probe && (!options.runtimeIds || options.runtimeIds.length === 0)) {
|
|
57
|
+
throw new Error("Live probing requires at least one explicit runtime id.");
|
|
58
|
+
}
|
|
59
|
+
const packageNames = ["@vraxis/agent-v", "ai", "ai-sdk-ollama"];
|
|
60
|
+
const purposes = {
|
|
61
|
+
"@vraxis/agent-v": "core execution contracts",
|
|
62
|
+
ai: "optional AI SDK adapter",
|
|
63
|
+
"ai-sdk-ollama": "optional Ollama adapter",
|
|
64
|
+
};
|
|
65
|
+
const dependencies = await Promise.all(packageNames.map(async (name) => {
|
|
66
|
+
const version = name === "@vraxis/agent-v" ? AGENT_V_VERSION : await services.packageVersion(name);
|
|
67
|
+
return { name, installed: Boolean(version), version, purpose: purposes[name] };
|
|
68
|
+
}));
|
|
69
|
+
const requestedRuntimes = options.runtimeIds ?? builtInRuntimes.map((runtime) => runtime.id);
|
|
70
|
+
const runtimes = await Promise.all(requestedRuntimes.map((id) => options.probe ? services.probeRuntime(id) : services.inspectRuntime(id)));
|
|
71
|
+
const ollama = await services.inspectOllama({ baseURL: options.ollamaBaseURL });
|
|
72
|
+
const issues = [];
|
|
73
|
+
for (const dependency of dependencies) {
|
|
74
|
+
if (dependency.name === "@vraxis/agent-v" && !dependency.installed) {
|
|
75
|
+
issues.push({ severity: "error", component: dependency.name, message: "The @vraxis/agent-v package is not resolvable." });
|
|
76
|
+
}
|
|
77
|
+
else if (!dependency.installed) {
|
|
78
|
+
issues.push({ severity: "info", component: dependency.name, message: `${dependency.name} is not installed because its adapter is optional.` });
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
for (const runtime of runtimes) {
|
|
82
|
+
const explicitlyRequested = options.runtimeIds?.includes(runtime.runtimeId) ?? false;
|
|
83
|
+
if (runtime.availability !== "installed") {
|
|
84
|
+
issues.push({
|
|
85
|
+
severity: explicitlyRequested ? "error" : "info",
|
|
86
|
+
component: runtime.runtimeId,
|
|
87
|
+
message: runtime.detail,
|
|
88
|
+
remediation: `Install and configure ${runtime.runtimeId}, or select another runtime.`,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
else if (options.probe && runtime.verification !== "ready") {
|
|
92
|
+
issues.push({ severity: "error", component: runtime.runtimeId, message: runtime.detail, remediation: `Authenticate ${runtime.runtimeId} and rerun the bounded probe.` });
|
|
93
|
+
}
|
|
94
|
+
else if (!options.probe && runtime.verification !== "ready") {
|
|
95
|
+
issues.push({ severity: "info", component: runtime.runtimeId, message: `${runtime.detail} Use --probe with an explicit --runtime to verify authentication.` });
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const ollamaRequested = Boolean(options.ollamaBaseURL || options.ollamaModel);
|
|
99
|
+
if (ollama.availability !== "ready") {
|
|
100
|
+
issues.push({
|
|
101
|
+
severity: ollamaRequested ? "error" : dependencies.find((dependency) => dependency.name === "ai-sdk-ollama")?.installed ? "warning" : "info",
|
|
102
|
+
component: "ollama",
|
|
103
|
+
message: ollama.detail,
|
|
104
|
+
remediation: ollama.availability === "dependency-missing" ? "Install ai and ai-sdk-ollama." : "Start or configure Ollama, then rerun doctor.",
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
else if (options.ollamaModel && !ollama.models.includes(options.ollamaModel)) {
|
|
108
|
+
issues.push({ severity: "error", component: "ollama", message: `Ollama model ${options.ollamaModel} is not installed.`, remediation: `Pull ${options.ollamaModel} only if that model is intentionally selected.` });
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
schemaVersion: 1,
|
|
112
|
+
packageVersion: AGENT_V_VERSION,
|
|
113
|
+
checkedAt: new Date().toISOString(),
|
|
114
|
+
dependencies,
|
|
115
|
+
runtimes,
|
|
116
|
+
ollama,
|
|
117
|
+
issues,
|
|
118
|
+
ok: !issues.some((issue) => issue.severity === "error"),
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/node/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EACL,qBAAqB,EACrB,eAAe,GAChB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,eAAe,EAAyB,MAAM,kBAAkB,CAAC;AAiD1E,KAAK,UAAU,cAAc,CAAC,IAAY;IACxC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAAC,CAAC;IACjD,MAAM,CAAC;QAAC,OAAO,SAAS,CAAC;IAAC,CAAC;IAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;IACjC,OAAO,OAAO,KAAK,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAA0C,CAAC;YAC5H,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ;gBAAE,OAAO,QAAQ,CAAC,OAAO,CAAC;QAC9F,CAAC;QAAC,MAAM,CAAC,CAAC,0CAA0C,CAAC,CAAC;QACtD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,OAA6B;IACxD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;QAC5D,OAAO,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,IAAK,KAA+B,CAAC,IAAI,KAAK,sBAAsB,CAAC;QAC3G,OAAO;YACL,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,aAAa;YAC5D,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,6DAA6D,CAAC,CAAC,CAAC,yCAAyC;YAC3H,OAAO,EAAE;gBACP,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,oBAAoB;gBAC3D,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,6DAA6D,CAAC,CAAC,CAAC,yCAAyC;gBAC5H,SAAS,EAAE,KAAK;aACjB;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,eAAe;IACtB,MAAM,KAAK,GAAG,IAAI,qBAAqB,EAAE,CAAC;IAC1C,OAAO;QACL,cAAc;QACd,cAAc,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;QACvD,YAAY,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;QACnD,aAAa;KACd,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAA+B,EAAE,EAAE,WAAiC,eAAe,EAAE;IACtH,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QAC9E,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,YAAY,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,eAAe,CAAU,CAAC;IACzE,MAAM,QAAQ,GAAG;QACf,iBAAiB,EAAE,0BAA0B;QAC7C,EAAE,EAAE,yBAAyB;QAC7B,eAAe,EAAE,yBAAyB;KAClC,CAAC;IACX,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAA6B,EAAE;QAChG,MAAM,OAAO,GAAG,IAAI,KAAK,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACnG,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACjF,CAAC,CAAC,CAAC,CAAC;IACJ,MAAM,iBAAiB,GAAG,OAAO,CAAC,UAAU,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7F,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3I,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAChF,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE,CAAC;QACtC,IAAI,UAAU,CAAC,IAAI,KAAK,iBAAiB,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;YACnE,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,gDAAgD,EAAE,CAAC,CAAC;QAC5H,CAAC;aAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,IAAI,oDAAoD,EAAE,CAAC,CAAC;QACjJ,CAAC;IACH,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,mBAAmB,GAAG,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC;QACrF,IAAI,OAAO,CAAC,YAAY,KAAK,WAAW,EAAE,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;gBAChD,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,OAAO,EAAE,OAAO,CAAC,MAAM;gBACvB,WAAW,EAAE,yBAAyB,OAAO,CAAC,SAAS,8BAA8B;aACtF,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,YAAY,KAAK,OAAO,EAAE,CAAC;YAC7D,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,gBAAgB,OAAO,CAAC,SAAS,+BAA+B,EAAE,CAAC,CAAC;QAC3K,CAAC;aAAM,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,YAAY,KAAK,OAAO,EAAE,CAAC;YAC9D,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,mEAAmE,EAAE,CAAC,CAAC;QACjK,CAAC;IACH,CAAC;IACD,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9E,IAAI,MAAM,CAAC,YAAY,KAAK,OAAO,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,eAAe,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;YAC5I,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,MAAM,CAAC,MAAM;YACtB,WAAW,EAAE,MAAM,CAAC,YAAY,KAAK,oBAAoB,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,+CAA+C;SAC9I,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,OAAO,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/E,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,OAAO,CAAC,WAAW,oBAAoB,EAAE,WAAW,EAAE,QAAQ,OAAO,CAAC,WAAW,gDAAgD,EAAE,CAAC,CAAC;IACtN,CAAC;IAED,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,cAAc,EAAE,eAAe;QAC/B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,YAAY;QACZ,QAAQ;QACR,MAAM;QACN,MAAM;QACN,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC;KACxD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type AgentEvent, type AgentSession, type AgentVConfig, type ConfigStore, type EventSink, type ExecutionScope, type RunEventStore, type SessionStore } from "../core/index.js";
|
|
2
|
+
export * from "./skills.js";
|
|
3
|
+
export * from "./doctor.js";
|
|
4
|
+
export declare class JsonConfigStore implements ConfigStore {
|
|
5
|
+
private readonly path;
|
|
6
|
+
constructor(path: string);
|
|
7
|
+
load(): Promise<AgentVConfig>;
|
|
8
|
+
save(config: AgentVConfig): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare class JsonSessionStore implements SessionStore {
|
|
11
|
+
private readonly directory;
|
|
12
|
+
constructor(directory: string);
|
|
13
|
+
private path;
|
|
14
|
+
get(scope: ExecutionScope, id: string): Promise<AgentSession | undefined>;
|
|
15
|
+
save(session: AgentSession): Promise<void>;
|
|
16
|
+
delete(scope: ExecutionScope, id: string): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
export declare class JsonlRunEventStore implements RunEventStore, EventSink {
|
|
19
|
+
private readonly path;
|
|
20
|
+
private pending;
|
|
21
|
+
constructor(path: string);
|
|
22
|
+
append(event: AgentEvent): Promise<void>;
|
|
23
|
+
emit(event: AgentEvent): Promise<void>;
|
|
24
|
+
list(scope: ExecutionScope, runId: string): Promise<readonly AgentEvent[]>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEtM,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAc5B,qBAAa,eAAgB,YAAW,WAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,MAAM;IACnC,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC;IAC7B,IAAI,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;CAChD;AAED,qBAAa,gBAAiB,YAAW,YAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,MAAM;IAC9C,OAAO,CAAC,IAAI;IAMN,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IACzE,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1C,MAAM,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAI/D;AAED,qBAAa,kBAAmB,YAAW,aAAa,EAAE,SAAS;IAErD,OAAO,CAAC,QAAQ,CAAC,IAAI;IADjC,OAAO,CAAC,OAAO,CAAoC;gBACtB,IAAI,EAAE,MAAM;IACzC,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxC,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAChC,IAAI,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC;CAajF"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { mkdir, readFile, rename, writeFile, appendFile } from "node:fs/promises";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
|
+
import { defaultConfig } from "../core/index.js";
|
|
4
|
+
export * from "./skills.js";
|
|
5
|
+
export * from "./doctor.js";
|
|
6
|
+
async function atomicJson(path, value) {
|
|
7
|
+
await mkdir(dirname(path), { recursive: true, mode: 0o700 });
|
|
8
|
+
const temporary = `${path}.${process.pid}.${crypto.randomUUID()}.tmp`;
|
|
9
|
+
await writeFile(temporary, `${JSON.stringify(value, null, 2)}\n`, { mode: 0o600 });
|
|
10
|
+
await rename(temporary, path);
|
|
11
|
+
}
|
|
12
|
+
async function readJson(path) {
|
|
13
|
+
try {
|
|
14
|
+
return JSON.parse(await readFile(path, "utf8"));
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
if (error.code === "ENOENT")
|
|
18
|
+
return undefined;
|
|
19
|
+
throw error;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export class JsonConfigStore {
|
|
23
|
+
path;
|
|
24
|
+
constructor(path) {
|
|
25
|
+
this.path = path;
|
|
26
|
+
}
|
|
27
|
+
async load() { return (await readJson(this.path)) ?? defaultConfig(); }
|
|
28
|
+
async save(config) { await atomicJson(this.path, config); }
|
|
29
|
+
}
|
|
30
|
+
export class JsonSessionStore {
|
|
31
|
+
directory;
|
|
32
|
+
constructor(directory) {
|
|
33
|
+
this.directory = directory;
|
|
34
|
+
}
|
|
35
|
+
path(scope, id) {
|
|
36
|
+
for (const [label, value] of [["tenant", scope.tenantId], ["project", scope.projectId], ["principal", scope.principalId], ["engagement", scope.engagementId ?? "none"], ["session", id]]) {
|
|
37
|
+
if (!/^[a-zA-Z0-9_-]+$/.test(value))
|
|
38
|
+
throw new Error(`${label} ids may contain only letters, numbers, underscores, and hyphens.`);
|
|
39
|
+
}
|
|
40
|
+
return `${this.directory}/${scope.tenantId}/${scope.projectId}/${scope.principalId}/${scope.engagementId ?? "none"}/${id}.json`;
|
|
41
|
+
}
|
|
42
|
+
async get(scope, id) { return readJson(this.path(scope, id)); }
|
|
43
|
+
async save(session) { await atomicJson(this.path(session.scope, session.id), session); }
|
|
44
|
+
async delete(scope, id) {
|
|
45
|
+
const { rm } = await import("node:fs/promises");
|
|
46
|
+
await rm(this.path(scope, id), { force: true });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export class JsonlRunEventStore {
|
|
50
|
+
path;
|
|
51
|
+
pending = Promise.resolve();
|
|
52
|
+
constructor(path) {
|
|
53
|
+
this.path = path;
|
|
54
|
+
}
|
|
55
|
+
append(event) {
|
|
56
|
+
const write = this.pending.then(async () => {
|
|
57
|
+
await mkdir(dirname(this.path), { recursive: true, mode: 0o700 });
|
|
58
|
+
await appendFile(this.path, `${JSON.stringify(event)}\n`, { mode: 0o600 });
|
|
59
|
+
});
|
|
60
|
+
this.pending = write.catch(() => undefined);
|
|
61
|
+
return write;
|
|
62
|
+
}
|
|
63
|
+
emit(event) { return this.append(event); }
|
|
64
|
+
async list(scope, runId) {
|
|
65
|
+
const contents = await readFile(this.path, "utf8").catch((error) => {
|
|
66
|
+
if (error.code === "ENOENT")
|
|
67
|
+
return "";
|
|
68
|
+
throw error;
|
|
69
|
+
});
|
|
70
|
+
return contents.split("\n").filter(Boolean).flatMap((line) => {
|
|
71
|
+
try {
|
|
72
|
+
return [JSON.parse(line)];
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return [];
|
|
76
|
+
}
|
|
77
|
+
}).filter((event) => event.runId === runId
|
|
78
|
+
&& event.scope.tenantId === scope.tenantId
|
|
79
|
+
&& event.scope.projectId === scope.projectId
|
|
80
|
+
&& event.scope.principalId === scope.principalId
|
|
81
|
+
&& event.scope.engagementId === scope.engagementId);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type AgentSkill } from "../core/index.js";
|
|
2
|
+
export interface LoadedSkillPackage {
|
|
3
|
+
skill: AgentSkill;
|
|
4
|
+
rootPath: string;
|
|
5
|
+
manifestPath: string;
|
|
6
|
+
scripts: readonly string[];
|
|
7
|
+
references: readonly string[];
|
|
8
|
+
assets: readonly string[];
|
|
9
|
+
}
|
|
10
|
+
export declare function loadSkillPackage(directory: string): Promise<LoadedSkillPackage>;
|
|
11
|
+
export declare function discoverSkillPackages(parentDirectory: string): Promise<readonly LoadedSkillPackage[]>;
|
|
12
|
+
//# sourceMappingURL=skills.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/node/skills.ts"],"names":[],"mappings":"AAIA,OAAO,EAAe,KAAK,UAAU,EAAmB,MAAM,kBAAkB,CAAC;AAEjF,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3B;AAuCD,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA+CrF;AAED,wBAAsB,qBAAqB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAI3G"}
|