agentskeptic 1.3.0 → 2.0.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/README.md +2 -0
- package/dist/cli.js +8 -0
- package/dist/cli.js.map +1 -1
- package/dist/discovery-payload-v1.json +3 -1
- package/dist/publicDistribution.generated.d.ts +1 -1
- package/dist/publicDistribution.generated.js +1 -1
- package/dist/registryDraft/bootstrapArgsMerge.d.ts +5 -0
- package/dist/registryDraft/bootstrapArgsMerge.d.ts.map +1 -0
- package/dist/registryDraft/bootstrapArgsMerge.js +43 -0
- package/dist/registryDraft/bootstrapArgsMerge.js.map +1 -0
- package/dist/registryDraft/buildRegistryDraftPrompt.d.ts.map +1 -1
- package/dist/registryDraft/buildRegistryDraftPrompt.js +3 -2
- package/dist/registryDraft/buildRegistryDraftPrompt.js.map +1 -1
- package/dist/registryDraft/buildRegistryDraftPrompt.test.js +1 -0
- package/dist/registryDraft/buildRegistryDraftPrompt.test.js.map +1 -1
- package/dist/registryDraft/createRegistryDraftAjv.js +2 -2
- package/dist/registryDraft/createRegistryDraftAjv.js.map +1 -1
- package/dist/registryDraft/draftEnv.d.ts +20 -0
- package/dist/registryDraft/draftEnv.d.ts.map +1 -0
- package/dist/registryDraft/draftEnv.js +47 -0
- package/dist/registryDraft/draftEnv.js.map +1 -0
- package/dist/registryDraft/engine.d.ts +26 -0
- package/dist/registryDraft/engine.d.ts.map +1 -0
- package/dist/registryDraft/engine.js +149 -0
- package/dist/registryDraft/engine.js.map +1 -0
- package/dist/registryDraft/index.d.ts +5 -1
- package/dist/registryDraft/index.d.ts.map +1 -1
- package/dist/registryDraft/index.js +3 -0
- package/dist/registryDraft/index.js.map +1 -1
- package/dist/registryDraft/jsonPointer.d.ts +8 -0
- package/dist/registryDraft/jsonPointer.d.ts.map +1 -0
- package/dist/registryDraft/jsonPointer.js +56 -0
- package/dist/registryDraft/jsonPointer.js.map +1 -0
- package/dist/registryDraft/parseAndNormalizeRegistryDraftRequest.d.ts +3 -0
- package/dist/registryDraft/parseAndNormalizeRegistryDraftRequest.d.ts.map +1 -1
- package/dist/registryDraft/parseAndNormalizeRegistryDraftRequest.js +3 -1
- package/dist/registryDraft/parseAndNormalizeRegistryDraftRequest.js.map +1 -1
- package/dist/registryDraft/providers/hosted_openai.d.ts +15 -0
- package/dist/registryDraft/providers/hosted_openai.d.ts.map +1 -0
- package/dist/registryDraft/providers/hosted_openai.js +77 -0
- package/dist/registryDraft/providers/hosted_openai.js.map +1 -0
- package/dist/registryDraft/providers/local_ollama.d.ts +14 -0
- package/dist/registryDraft/providers/local_ollama.d.ts.map +1 -0
- package/dist/registryDraft/providers/local_ollama.js +78 -0
- package/dist/registryDraft/providers/local_ollama.js.map +1 -0
- package/dist/registryDraft/readiness.d.ts +16 -0
- package/dist/registryDraft/readiness.d.ts.map +1 -0
- package/dist/registryDraft/readiness.js +58 -0
- package/dist/registryDraft/readiness.js.map +1 -0
- package/dist/registryDraft/runRegistryDraftCli.d.ts +2 -0
- package/dist/registryDraft/runRegistryDraftCli.d.ts.map +1 -0
- package/dist/registryDraft/runRegistryDraftCli.js +100 -0
- package/dist/registryDraft/runRegistryDraftCli.js.map +1 -0
- package/dist/schema-validation.test.js +37 -0
- package/dist/schema-validation.test.js.map +1 -1
- package/dist/schemaLoad.d.ts +1 -1
- package/dist/schemaLoad.d.ts.map +1 -1
- package/dist/schemaLoad.js +2 -0
- package/dist/schemaLoad.js.map +1 -1
- package/package.json +9 -3
- package/schemas/contract/v1.json +65 -0
- package/schemas/contract-manifest.schema.json +130 -0
- package/schemas/openapi-commercial-v1.in.yaml +4 -0
- package/schemas/openapi-commercial-v1.yaml +5 -1
- package/schemas/registry-draft-llm-partial-v1.schema.json +18 -4
- package/schemas/registry-draft-request-v1.schema.json +11 -0
- package/schemas/registry-draft-response.schema.json +89 -0
- package/scripts/discovery-payload.lib.cjs +6 -0
- package/scripts/emit-primary-marketing.cjs +25 -0
- package/schemas/registry-draft-response-v2.schema.json +0 -52
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { parseBootstrapPackInputJson, synthesizeQuickInputUtf8FromOpenAiV1 } from "../bootstrap/bootstrapPackSynthesis.js";
|
|
2
|
+
import { buildRegistryDraftPrompt } from "./buildRegistryDraftPrompt.js";
|
|
3
|
+
import { scoreDraftReadiness, modelLabelForGeneration } from "./readiness.js";
|
|
4
|
+
import { callHostedOpenAiRegistryDraftJson } from "./providers/hosted_openai.js";
|
|
5
|
+
import { callLocalOllamaRegistryDraftJson } from "./providers/local_ollama.js";
|
|
6
|
+
/**
|
|
7
|
+
* Single orchestration pipeline: provider → merge → deterministic quick ingest → tools AJV → readiness → full AJV v3 envelope.
|
|
8
|
+
*/
|
|
9
|
+
export async function generateRegistryDraft(params) {
|
|
10
|
+
const { normalizedBootstrapPackInput, ddlHint, draftProvider } = params.parsed;
|
|
11
|
+
const prompt = buildRegistryDraftPrompt(normalizedBootstrapPackInput, ddlHint);
|
|
12
|
+
const hostedModel = params.env["REGISTRY_DRAFT_MODEL"]?.trim() || "gpt-4o-mini";
|
|
13
|
+
let llmPartialText;
|
|
14
|
+
try {
|
|
15
|
+
if (draftProvider === "hosted_openai") {
|
|
16
|
+
const ai = await callHostedOpenAiRegistryDraftJson({
|
|
17
|
+
prompt,
|
|
18
|
+
model: hostedModel,
|
|
19
|
+
env: params.env,
|
|
20
|
+
fetchImpl: params.fetchImpl,
|
|
21
|
+
});
|
|
22
|
+
if (!ai.ok) {
|
|
23
|
+
return {
|
|
24
|
+
ok: false,
|
|
25
|
+
status: ai.status,
|
|
26
|
+
body: { code: "OPENAI_ERROR", message: ai.message },
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
llmPartialText = ai.contentText;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
const o = await callLocalOllamaRegistryDraftJson({
|
|
33
|
+
prompt,
|
|
34
|
+
env: params.env,
|
|
35
|
+
fetchImpl: params.fetchImpl,
|
|
36
|
+
});
|
|
37
|
+
if (!o.ok) {
|
|
38
|
+
return {
|
|
39
|
+
ok: false,
|
|
40
|
+
status: o.status,
|
|
41
|
+
body: { code: "OLLAMA_ERROR", message: o.message },
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
llmPartialText = o.contentText;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return {
|
|
49
|
+
ok: false,
|
|
50
|
+
status: 503,
|
|
51
|
+
body: { code: "PROVIDER_ERROR", message: "Draft engine invocation failed." },
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
let llmPartial;
|
|
55
|
+
try {
|
|
56
|
+
llmPartial = JSON.parse(llmPartialText);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return {
|
|
60
|
+
ok: false,
|
|
61
|
+
status: 502,
|
|
62
|
+
body: { code: "MODEL_OUTPUT_INVALID", message: "model returned non-JSON" },
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
if (llmPartial === null || typeof llmPartial !== "object" || Array.isArray(llmPartial)) {
|
|
66
|
+
return {
|
|
67
|
+
ok: false,
|
|
68
|
+
status: 502,
|
|
69
|
+
body: { code: "MODEL_OUTPUT_INVALID", message: "model output must be a JSON object" },
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
const lp = llmPartial;
|
|
73
|
+
let bodyUtf8;
|
|
74
|
+
try {
|
|
75
|
+
const rawBootstrap = JSON.stringify(normalizedBootstrapPackInput);
|
|
76
|
+
const pbi = parseBootstrapPackInputJson(rawBootstrap);
|
|
77
|
+
bodyUtf8 = synthesizeQuickInputUtf8FromOpenAiV1(pbi);
|
|
78
|
+
}
|
|
79
|
+
catch (e) {
|
|
80
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
81
|
+
return { ok: false, status: 500, body: { code: "QUICK_INGEST_SYNTHESIS_FAILED", message: msg } };
|
|
82
|
+
}
|
|
83
|
+
const draftObj = lp["draft"];
|
|
84
|
+
if (draftObj === null || typeof draftObj !== "object" || Array.isArray(draftObj)) {
|
|
85
|
+
return {
|
|
86
|
+
ok: false,
|
|
87
|
+
status: 502,
|
|
88
|
+
body: { code: "MODEL_OUTPUT_INVALID", message: "draft missing" },
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
const toolsArr = draftObj["tools"];
|
|
92
|
+
if (!params.validateToolsRegistryArray(toolsArr)) {
|
|
93
|
+
const errs = params.validateToolsRegistryArray.errors ?? [];
|
|
94
|
+
return {
|
|
95
|
+
ok: false,
|
|
96
|
+
status: 502,
|
|
97
|
+
body: { code: "MODEL_OUTPUT_INVALID", errors: errs },
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
const assumptionsRaw = lp["assumptions"];
|
|
101
|
+
const warningsRaw = lp["warnings"];
|
|
102
|
+
const assumptions = Array.isArray(assumptionsRaw) ? assumptionsRaw.filter((x) => typeof x === "string") : [];
|
|
103
|
+
const warnings = Array.isArray(warningsRaw) ? warningsRaw.filter((x) => typeof x === "string") : [];
|
|
104
|
+
const readiness = scoreDraftReadiness({
|
|
105
|
+
assumptions,
|
|
106
|
+
warnings,
|
|
107
|
+
normalizedBootstrap: normalizedBootstrapPackInput,
|
|
108
|
+
draftToolsUnknown: toolsArr,
|
|
109
|
+
});
|
|
110
|
+
const genModelLabel = modelLabelForGeneration(draftProvider, lp["model"], params.env);
|
|
111
|
+
let disclaimerFinal = lp["disclaimer"];
|
|
112
|
+
if (typeof disclaimerFinal !== "string" || disclaimerFinal.trim().length === 0) {
|
|
113
|
+
disclaimerFinal = "Draft output requires human review before use.";
|
|
114
|
+
}
|
|
115
|
+
const merged = {
|
|
116
|
+
schemaVersion: 3,
|
|
117
|
+
draft: draftObj,
|
|
118
|
+
assumptions,
|
|
119
|
+
warnings,
|
|
120
|
+
disclaimer: disclaimerFinal,
|
|
121
|
+
generation: {
|
|
122
|
+
backend: draftProvider,
|
|
123
|
+
model: genModelLabel,
|
|
124
|
+
},
|
|
125
|
+
quickIngestInput: { encoding: "utf8", body: bodyUtf8 },
|
|
126
|
+
readiness,
|
|
127
|
+
diagnostics: [],
|
|
128
|
+
};
|
|
129
|
+
const validateResponse = params.validateResponseEnvelope;
|
|
130
|
+
if (!validateResponse(merged)) {
|
|
131
|
+
return {
|
|
132
|
+
ok: false,
|
|
133
|
+
status: 502,
|
|
134
|
+
body: { code: "MODEL_OUTPUT_INVALID", errors: validateResponse.errors ?? [] },
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
return { ok: true, status: 200, body: merged };
|
|
138
|
+
}
|
|
139
|
+
export function credentialMissingForDraftProvider(draftProvider, env) {
|
|
140
|
+
if (draftProvider === "hosted_openai") {
|
|
141
|
+
const k = env["OPENAI_API_KEY"];
|
|
142
|
+
return k === undefined || k.trim().length === 0 ? "OPENAI_API_KEY required for hosted_openai draftProvider" : undefined;
|
|
143
|
+
}
|
|
144
|
+
const m = env["AGENTSKEPTIC_DRAFT_LOCAL_MODEL"];
|
|
145
|
+
return m === undefined || m.trim().length === 0
|
|
146
|
+
? "AGENTSKEPTIC_DRAFT_LOCAL_MODEL required for local_ollama draftProvider"
|
|
147
|
+
: undefined;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/registryDraft/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
export { createRegistryDraftAjv, getRegistryDraftRequestValidator, getRegistryDraftResponseEnvelopeValidator, getBootstrapPackInputValidator, getToolsRegistryArrayValidator, } from "./createRegistryDraftAjv.js";
|
|
2
2
|
export { normalizeOpenAiToolCallsToBootstrapPackInput } from "./normalizeOpenAiToolCallsToBootstrapPackInput.js";
|
|
3
3
|
export { parseAndNormalizeRegistryDraftRequest } from "./parseAndNormalizeRegistryDraftRequest.js";
|
|
4
|
-
export type { RegistryDraftParseResult } from "./parseAndNormalizeRegistryDraftRequest.js";
|
|
4
|
+
export type { DraftProviderId, RegistryDraftParseResult } from "./parseAndNormalizeRegistryDraftRequest.js";
|
|
5
5
|
export { buildRegistryDraftPrompt } from "./buildRegistryDraftPrompt.js";
|
|
6
6
|
export { getOpenAiRegistryDraftLlmResponseJsonSchemaRoot } from "./openAiLlmResponseSchema.js";
|
|
7
|
+
export { credentialMissingForDraftProvider, generateRegistryDraft } from "./engine.js";
|
|
8
|
+
export type { DraftEngineFailure, DraftEngineSuccess } from "./engine.js";
|
|
9
|
+
export { callHostedOpenAiRegistryDraftJson } from "./providers/hosted_openai.js";
|
|
10
|
+
export { callLocalOllamaRegistryDraftJson } from "./providers/local_ollama.js";
|
|
7
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registryDraft/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,gCAAgC,EAChC,yCAAyC,EACzC,8BAA8B,EAC9B,8BAA8B,GAC/B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,4CAA4C,EAAE,MAAM,mDAAmD,CAAC;AACjH,OAAO,EAAE,qCAAqC,EAAE,MAAM,4CAA4C,CAAC;AACnG,YAAY,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registryDraft/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,gCAAgC,EAChC,yCAAyC,EACzC,8BAA8B,EAC9B,8BAA8B,GAC/B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,4CAA4C,EAAE,MAAM,mDAAmD,CAAC;AACjH,OAAO,EAAE,qCAAqC,EAAE,MAAM,4CAA4C,CAAC;AACnG,YAAY,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AAC5G,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,+CAA+C,EAAE,MAAM,8BAA8B,CAAC;AAC/F,OAAO,EAAE,iCAAiC,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACvF,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,iCAAiC,EAAE,MAAM,8BAA8B,CAAC;AACjF,OAAO,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC"}
|
|
@@ -3,4 +3,7 @@ export { normalizeOpenAiToolCallsToBootstrapPackInput } from "./normalizeOpenAiT
|
|
|
3
3
|
export { parseAndNormalizeRegistryDraftRequest } from "./parseAndNormalizeRegistryDraftRequest.js";
|
|
4
4
|
export { buildRegistryDraftPrompt } from "./buildRegistryDraftPrompt.js";
|
|
5
5
|
export { getOpenAiRegistryDraftLlmResponseJsonSchemaRoot } from "./openAiLlmResponseSchema.js";
|
|
6
|
+
export { credentialMissingForDraftProvider, generateRegistryDraft } from "./engine.js";
|
|
7
|
+
export { callHostedOpenAiRegistryDraftJson } from "./providers/hosted_openai.js";
|
|
8
|
+
export { callLocalOllamaRegistryDraftJson } from "./providers/local_ollama.js";
|
|
6
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registryDraft/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,gCAAgC,EAChC,yCAAyC,EACzC,8BAA8B,EAC9B,8BAA8B,GAC/B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,4CAA4C,EAAE,MAAM,mDAAmD,CAAC;AACjH,OAAO,EAAE,qCAAqC,EAAE,MAAM,4CAA4C,CAAC;AAEnG,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,+CAA+C,EAAE,MAAM,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registryDraft/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,gCAAgC,EAChC,yCAAyC,EACzC,8BAA8B,EAC9B,8BAA8B,GAC/B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,4CAA4C,EAAE,MAAM,mDAAmD,CAAC;AACjH,OAAO,EAAE,qCAAqC,EAAE,MAAM,4CAA4C,CAAC;AAEnG,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,+CAA+C,EAAE,MAAM,8BAA8B,CAAC;AAC/F,OAAO,EAAE,iCAAiC,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEvF,OAAO,EAAE,iCAAiC,EAAE,MAAM,8BAA8B,CAAC;AACjF,OAAO,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Minimal RFC 6901 pointer resolution for draft verification pointerStress (integrator payloads). */
|
|
2
|
+
/**
|
|
3
|
+
* Resolve a JSON Pointer against `doc`.
|
|
4
|
+
* Supports `/a/b`; returns `undefined` if path missing.
|
|
5
|
+
*/
|
|
6
|
+
export declare function resolveJsonPointer(doc: unknown, pointer: string): unknown;
|
|
7
|
+
export declare function collectPointerStringsFromDraftTools(toolsArrayOrNested: unknown): string[];
|
|
8
|
+
//# sourceMappingURL=jsonPointer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonPointer.d.ts","sourceRoot":"","sources":["../../src/registryDraft/jsonPointer.ts"],"names":[],"mappings":"AAAA,sGAAsG;AAMtG;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAkBzE;AAED,wBAAgB,mCAAmC,CAAC,kBAAkB,EAAE,OAAO,GAAG,MAAM,EAAE,CAmBzF"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/** Minimal RFC 6901 pointer resolution for draft verification pointerStress (integrator payloads). */
|
|
2
|
+
function decodeJsonPointerSegment(seg) {
|
|
3
|
+
return seg.replace(/~1/g, "/").replace(/~0/g, "~");
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Resolve a JSON Pointer against `doc`.
|
|
7
|
+
* Supports `/a/b`; returns `undefined` if path missing.
|
|
8
|
+
*/
|
|
9
|
+
export function resolveJsonPointer(doc, pointer) {
|
|
10
|
+
if (pointer === "")
|
|
11
|
+
return doc;
|
|
12
|
+
if (!pointer.startsWith("/"))
|
|
13
|
+
return undefined;
|
|
14
|
+
const parts = pointer.slice(1).split("/").map(decodeJsonPointerSegment);
|
|
15
|
+
let cur = doc;
|
|
16
|
+
for (const p of parts) {
|
|
17
|
+
if (cur === null || typeof cur !== "object")
|
|
18
|
+
return undefined;
|
|
19
|
+
if (Array.isArray(cur)) {
|
|
20
|
+
const i = Number(p);
|
|
21
|
+
if (!Number.isFinite(i) || i < 0 || i >= cur.length)
|
|
22
|
+
return undefined;
|
|
23
|
+
cur = cur[i];
|
|
24
|
+
}
|
|
25
|
+
else if (Object.prototype.hasOwnProperty.call(cur, p)) {
|
|
26
|
+
cur = cur[p];
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return cur;
|
|
33
|
+
}
|
|
34
|
+
export function collectPointerStringsFromDraftTools(toolsArrayOrNested) {
|
|
35
|
+
const out = new Set();
|
|
36
|
+
function walk(node) {
|
|
37
|
+
if (node === null || typeof node !== "object")
|
|
38
|
+
return;
|
|
39
|
+
if (Array.isArray(node)) {
|
|
40
|
+
node.forEach(walk);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const o = node;
|
|
44
|
+
if (typeof o.pointer === "string") {
|
|
45
|
+
const s = o.pointer;
|
|
46
|
+
if (s.startsWith("/"))
|
|
47
|
+
out.add(s);
|
|
48
|
+
}
|
|
49
|
+
for (const v of Object.values(o)) {
|
|
50
|
+
walk(v);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
walk(toolsArrayOrNested);
|
|
54
|
+
return [...out.values()];
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=jsonPointer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonPointer.js","sourceRoot":"","sources":["../../src/registryDraft/jsonPointer.ts"],"names":[],"mappings":"AAAA,sGAAsG;AAEtG,SAAS,wBAAwB,CAAC,GAAW;IAC3C,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAY,EAAE,OAAe;IAC9D,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,GAAG,CAAC;IAC/B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACxE,IAAI,GAAG,GAAY,GAAG,CAAC;IACvB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM;gBAAE,OAAO,SAAS,CAAC;YACtE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACf,CAAC;aAAM,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,GAAI,GAA+B,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,kBAA2B;IAC7E,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,SAAS,IAAI,CAAC,IAAa;QACzB,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO;QACtD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO;QACT,CAAC;QACD,MAAM,CAAC,GAAG,IAA+B,CAAC;QAC1C,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;YACpB,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,CAAC,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IACD,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAC3B,CAAC"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import type { ValidateFunction } from "ajv/dist/2020.js";
|
|
2
|
+
/** Explicit backend — default `hosted_openai`. No silent failover. */
|
|
3
|
+
export type DraftProviderId = "hosted_openai" | "local_ollama";
|
|
2
4
|
export type RegistryDraftParseResult = {
|
|
3
5
|
ok: true;
|
|
4
6
|
normalizedBootstrapPackInput: Record<string, unknown>;
|
|
5
7
|
ddlHint: string | undefined;
|
|
8
|
+
draftProvider: DraftProviderId;
|
|
6
9
|
} | {
|
|
7
10
|
ok: false;
|
|
8
11
|
errors: unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseAndNormalizeRegistryDraftRequest.d.ts","sourceRoot":"","sources":["../../src/registryDraft/parseAndNormalizeRegistryDraftRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGzD,MAAM,MAAM,wBAAwB,GAChC;IACE,EAAE,EAAE,IAAI,CAAC;IACT,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtD,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"parseAndNormalizeRegistryDraftRequest.d.ts","sourceRoot":"","sources":["../../src/registryDraft/parseAndNormalizeRegistryDraftRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGzD,sEAAsE;AACtE,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG,cAAc,CAAC;AAE/D,MAAM,MAAM,wBAAwB,GAChC;IACE,EAAE,EAAE,IAAI,CAAC;IACT,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtD,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,aAAa,EAAE,eAAe,CAAC;CAChC,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;AAMnC;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,QAAQ,EAAE,OAAO,EACjB,eAAe,EAAE,gBAAgB,EACjC,iBAAiB,EAAE,gBAAgB,GAClC,wBAAwB,CA8B1B"}
|
|
@@ -13,6 +13,8 @@ export function parseAndNormalizeRegistryDraftRequest(envelope, validateRequest,
|
|
|
13
13
|
const e = envelope;
|
|
14
14
|
const ddlHintRaw = e.ddlHint;
|
|
15
15
|
const ddlHint = typeof ddlHintRaw === "string" && ddlHintRaw.length > 0 ? ddlHintRaw : undefined;
|
|
16
|
+
const draftProviderRaw = e["draftProvider"];
|
|
17
|
+
const draftProvider = draftProviderRaw === "local_ollama" ? "local_ollama" : "hosted_openai";
|
|
16
18
|
let normalized;
|
|
17
19
|
if (e.inputKind === "bootstrap_pack_v1") {
|
|
18
20
|
normalized = cloneJson(e.bootstrapPackInput);
|
|
@@ -29,6 +31,6 @@ export function parseAndNormalizeRegistryDraftRequest(envelope, validateRequest,
|
|
|
29
31
|
if (!validateBootstrap(normalized)) {
|
|
30
32
|
return { ok: false, errors: validateBootstrap.errors ?? [] };
|
|
31
33
|
}
|
|
32
|
-
return { ok: true, normalizedBootstrapPackInput: normalized, ddlHint };
|
|
34
|
+
return { ok: true, normalizedBootstrapPackInput: normalized, ddlHint, draftProvider };
|
|
33
35
|
}
|
|
34
36
|
//# sourceMappingURL=parseAndNormalizeRegistryDraftRequest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseAndNormalizeRegistryDraftRequest.js","sourceRoot":"","sources":["../../src/registryDraft/parseAndNormalizeRegistryDraftRequest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4CAA4C,EAAE,MAAM,mDAAmD,CAAC;
|
|
1
|
+
{"version":3,"file":"parseAndNormalizeRegistryDraftRequest.js","sourceRoot":"","sources":["../../src/registryDraft/parseAndNormalizeRegistryDraftRequest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4CAA4C,EAAE,MAAM,mDAAmD,CAAC;AAcjH,SAAS,SAAS,CAAI,CAAI;IACxB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAM,CAAC;AAC5C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qCAAqC,CACnD,QAAiB,EACjB,eAAiC,EACjC,iBAAmC;IAEnC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,GAAG,QAAmC,CAAC;IAC9C,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC;IAC7B,MAAM,OAAO,GACX,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IACnF,MAAM,gBAAgB,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC;IAC5C,MAAM,aAAa,GACjB,gBAAgB,KAAK,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC;IAEzE,IAAI,UAAmC,CAAC;IACxC,IAAI,CAAC,CAAC,SAAS,KAAK,mBAAmB,EAAE,CAAC;QACxC,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,kBAA6C,CAAC,CAAC;IAC1E,CAAC;SAAM,IAAI,CAAC,CAAC,SAAS,KAAK,sBAAsB,EAAE,CAAC;QAClD,UAAU,GAAG,4CAA4C,CAAC;YACxD,UAAU,EAAE,CAAC,CAAC,UAAoB;YAClC,UAAU,EAAE,CAAC,CAAC,UAAuB;SACtC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,EAAE,CAAC;IACnE,CAAC;IAED,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;IAC/D,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;AACxF,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type HostedOpenAiResult = {
|
|
2
|
+
ok: true;
|
|
3
|
+
contentText: string;
|
|
4
|
+
} | {
|
|
5
|
+
ok: false;
|
|
6
|
+
status: number;
|
|
7
|
+
message: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function callHostedOpenAiRegistryDraftJson(args: {
|
|
10
|
+
prompt: string;
|
|
11
|
+
model: string;
|
|
12
|
+
env: NodeJS.ProcessEnv;
|
|
13
|
+
fetchImpl?: typeof fetch;
|
|
14
|
+
}): Promise<HostedOpenAiResult>;
|
|
15
|
+
//# sourceMappingURL=hosted_openai.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hosted_openai.d.ts","sourceRoot":"","sources":["../../../src/registryDraft/providers/hosted_openai.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,kBAAkB,GAC1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD,wBAAsB,iCAAiC,CAAC,IAAI,EAAE;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAqE9B"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { getOpenAiRegistryDraftLlmResponseJsonSchemaRoot } from "../openAiLlmResponseSchema.js";
|
|
2
|
+
import { draftHttpTimeoutMs, fetchWithTransientRetry } from "../draftEnv.js";
|
|
3
|
+
/**
|
|
4
|
+
* OpenAI Chat Completions with `response_format.json_schema` (LLM partial).
|
|
5
|
+
*/
|
|
6
|
+
function openAiJsonSchemaPayload(root) {
|
|
7
|
+
const out = { ...root };
|
|
8
|
+
delete out["$schema"];
|
|
9
|
+
delete out["$id"];
|
|
10
|
+
delete out["title"];
|
|
11
|
+
delete out["description"];
|
|
12
|
+
return out;
|
|
13
|
+
}
|
|
14
|
+
export async function callHostedOpenAiRegistryDraftJson(args) {
|
|
15
|
+
const key = (args.env["OPENAI_API_KEY"] ?? "").trim();
|
|
16
|
+
if (!key) {
|
|
17
|
+
return { ok: false, status: 503, message: "OPENAI_API_KEY missing" };
|
|
18
|
+
}
|
|
19
|
+
const fetchFn = args.fetchImpl ?? globalThis.fetch;
|
|
20
|
+
const schemaRoot = openAiJsonSchemaPayload(getOpenAiRegistryDraftLlmResponseJsonSchemaRoot());
|
|
21
|
+
const ac = new AbortController();
|
|
22
|
+
const t = setTimeout(() => ac.abort(), draftHttpTimeoutMs(args.env));
|
|
23
|
+
let res;
|
|
24
|
+
try {
|
|
25
|
+
res = await fetchWithTransientRetry("https://api.openai.com/v1/chat/completions", {
|
|
26
|
+
method: "POST",
|
|
27
|
+
headers: {
|
|
28
|
+
Authorization: `Bearer ${key}`,
|
|
29
|
+
"Content-Type": "application/json",
|
|
30
|
+
},
|
|
31
|
+
body: JSON.stringify({
|
|
32
|
+
model: args.model,
|
|
33
|
+
messages: [{ role: "user", content: args.prompt }],
|
|
34
|
+
temperature: 0,
|
|
35
|
+
response_format: {
|
|
36
|
+
type: "json_schema",
|
|
37
|
+
json_schema: {
|
|
38
|
+
name: "RegistryDraftLlmPartialV1",
|
|
39
|
+
strict: false,
|
|
40
|
+
schema: schemaRoot,
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
}),
|
|
44
|
+
signal: ac.signal,
|
|
45
|
+
}, { timeouts: [100, 250], fetchFn });
|
|
46
|
+
}
|
|
47
|
+
catch (e) {
|
|
48
|
+
clearTimeout(t);
|
|
49
|
+
if (ac.signal.aborted) {
|
|
50
|
+
return { ok: false, status: 503, message: "PROVIDER_TIMEOUT" };
|
|
51
|
+
}
|
|
52
|
+
const nm = e instanceof Error ? e.name : "";
|
|
53
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
54
|
+
if (nm === "AbortError" || /\babort\b/i.test(msg)) {
|
|
55
|
+
return { ok: false, status: 503, message: "PROVIDER_TIMEOUT" };
|
|
56
|
+
}
|
|
57
|
+
return { ok: false, status: 503, message: "OPENAI_FETCH_FAILED" };
|
|
58
|
+
}
|
|
59
|
+
finally {
|
|
60
|
+
clearTimeout(t);
|
|
61
|
+
}
|
|
62
|
+
if (!res || !res.ok) {
|
|
63
|
+
return { ok: false, status: res?.status ?? 503, message: res?.message ?? "OPENAI_ERROR" };
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
const body = JSON.parse(res.text);
|
|
67
|
+
const content = body.choices?.[0]?.message?.content;
|
|
68
|
+
if (typeof content !== "string" || content.length === 0) {
|
|
69
|
+
return { ok: false, status: 503, message: "empty model content" };
|
|
70
|
+
}
|
|
71
|
+
return { ok: true, contentText: content };
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return { ok: false, status: 503, message: "OPENAI_PARSE_ERROR" };
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=hosted_openai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hosted_openai.js","sourceRoot":"","sources":["../../../src/registryDraft/providers/hosted_openai.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type LocalOllamaResult = {
|
|
2
|
+
ok: true;
|
|
3
|
+
contentText: string;
|
|
4
|
+
} | {
|
|
5
|
+
ok: false;
|
|
6
|
+
status: number;
|
|
7
|
+
message: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function callLocalOllamaRegistryDraftJson(args: {
|
|
10
|
+
prompt: string;
|
|
11
|
+
env: NodeJS.ProcessEnv;
|
|
12
|
+
fetchImpl?: typeof fetch;
|
|
13
|
+
}): Promise<LocalOllamaResult>;
|
|
14
|
+
//# sourceMappingURL=local_ollama.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local_ollama.d.ts","sourceRoot":"","sources":["../../../src/registryDraft/providers/local_ollama.ts"],"names":[],"mappings":"AAeA,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD,wBAAsB,gCAAgC,CAAC,IAAI,EAAE;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA0E7B"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { getOpenAiRegistryDraftLlmResponseJsonSchemaRoot } from "../openAiLlmResponseSchema.js";
|
|
2
|
+
import { defaultOllamaChatUrl, draftHttpTimeoutMs, fetchWithTransientRetry } from "../draftEnv.js";
|
|
3
|
+
/** Ollama `POST /api/chat` — `format: "json"` forces JSON-only content in `message.content`. */
|
|
4
|
+
function openAiJsonSchemaPayload(root) {
|
|
5
|
+
const out = { ...root };
|
|
6
|
+
delete out["$schema"];
|
|
7
|
+
delete out["$id"];
|
|
8
|
+
delete out["title"];
|
|
9
|
+
delete out["description"];
|
|
10
|
+
return out;
|
|
11
|
+
}
|
|
12
|
+
export async function callLocalOllamaRegistryDraftJson(args) {
|
|
13
|
+
const fetchFn = args.fetchImpl ?? globalThis.fetch;
|
|
14
|
+
const model = (args.env["AGENTSKEPTIC_DRAFT_LOCAL_MODEL"] ?? "").trim();
|
|
15
|
+
if (!model) {
|
|
16
|
+
return { ok: false, status: 503, message: "AGENTSKEPTIC_DRAFT_LOCAL_MODEL missing" };
|
|
17
|
+
}
|
|
18
|
+
const timeoutMs = draftHttpTimeoutMs(args.env);
|
|
19
|
+
const url = defaultOllamaChatUrl(args.env);
|
|
20
|
+
/** Ask Ollama to emit JSON-shaped output for downstream partial parse parity with hosted `_partial` schema prose in prompt body. */
|
|
21
|
+
const schemaGuide = JSON.stringify(openAiJsonSchemaPayload(getOpenAiRegistryDraftLlmResponseJsonSchemaRoot()));
|
|
22
|
+
const userContent = `${args.prompt}\n\nStrict output: conform to this JSON shape (RFC JSON only, no prose): ${schemaGuide.slice(0, 12000)}`;
|
|
23
|
+
const ac = new AbortController();
|
|
24
|
+
const tm = setTimeout(() => ac.abort(), timeoutMs);
|
|
25
|
+
let res;
|
|
26
|
+
try {
|
|
27
|
+
res = await fetchWithTransientRetry(url, {
|
|
28
|
+
method: "POST",
|
|
29
|
+
headers: { "Content-Type": "application/json" },
|
|
30
|
+
signal: ac.signal,
|
|
31
|
+
body: JSON.stringify({
|
|
32
|
+
model,
|
|
33
|
+
stream: false,
|
|
34
|
+
format: "json",
|
|
35
|
+
messages: [{ role: "user", content: userContent }],
|
|
36
|
+
}),
|
|
37
|
+
}, { timeouts: [100, 250], fetchFn });
|
|
38
|
+
}
|
|
39
|
+
catch (e) {
|
|
40
|
+
clearTimeout(tm);
|
|
41
|
+
if (ac.signal.aborted) {
|
|
42
|
+
return { ok: false, status: 503, message: "PROVIDER_TIMEOUT" };
|
|
43
|
+
}
|
|
44
|
+
const nm = e instanceof Error ? e.name : "";
|
|
45
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
46
|
+
if (nm === "AbortError" || /\babort\b/i.test(msg)) {
|
|
47
|
+
return { ok: false, status: 503, message: "PROVIDER_TIMEOUT" };
|
|
48
|
+
}
|
|
49
|
+
return { ok: false, status: 503, message: "OLLAMA_FETCH_FAILED" };
|
|
50
|
+
}
|
|
51
|
+
finally {
|
|
52
|
+
clearTimeout(tm);
|
|
53
|
+
}
|
|
54
|
+
if (!res || !res.ok) {
|
|
55
|
+
return { ok: false, status: res?.status ?? 503, message: res?.message ?? "OLLAMA_ERROR" };
|
|
56
|
+
}
|
|
57
|
+
try {
|
|
58
|
+
const body = JSON.parse(res.text);
|
|
59
|
+
const content = typeof body.message?.content === "string"
|
|
60
|
+
? body.message.content
|
|
61
|
+
: typeof body === "object" && body !== null && "response" in body
|
|
62
|
+
? String(body.response ?? "")
|
|
63
|
+
: "";
|
|
64
|
+
/** Some Ollama builds return structured object already */
|
|
65
|
+
let textOut = content;
|
|
66
|
+
if (!textOut && typeof body.message?.content === "object" && body.message.content !== null) {
|
|
67
|
+
textOut = JSON.stringify(body.message.content);
|
|
68
|
+
}
|
|
69
|
+
if (typeof textOut !== "string" || textOut.length === 0) {
|
|
70
|
+
return { ok: false, status: 503, message: "empty ollama model content" };
|
|
71
|
+
}
|
|
72
|
+
return { ok: true, contentText: textOut };
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return { ok: false, status: 503, message: "OLLAMA_PARSE_ERROR" };
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=local_ollama.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local_ollama.js","sourceRoot":"","sources":["../../../src/registryDraft/providers/local_ollama.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { DraftProviderId } from "./parseAndNormalizeRegistryDraftRequest.js";
|
|
2
|
+
export type ReadinessStatus = "ready" | "review" | "blocked";
|
|
3
|
+
declare const REASON_VALUES: readonly ["REGISTRY_INVALID", "MERGE_FAILED", "MODEL_NON_JSON", "POINTERS_UNRESOLVED", "ASSUMPTIONS_PRESENT", "WARNINGS_PRESENT", "OK"];
|
|
4
|
+
export type ReadinessReasonCode = (typeof REASON_VALUES)[number];
|
|
5
|
+
export declare function scoreDraftReadiness(input: {
|
|
6
|
+
assumptions: string[];
|
|
7
|
+
warnings: string[];
|
|
8
|
+
normalizedBootstrap: Record<string, unknown>;
|
|
9
|
+
draftToolsUnknown: unknown;
|
|
10
|
+
}): {
|
|
11
|
+
status: ReadinessStatus;
|
|
12
|
+
reasons: ReadinessReasonCode[];
|
|
13
|
+
};
|
|
14
|
+
export declare function modelLabelForGeneration(draftProvider: DraftProviderId, llmModelField: unknown, env: NodeJS.ProcessEnv): string;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=readiness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readiness.d.ts","sourceRoot":"","sources":["../../src/registryDraft/readiness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAOlF,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE7D,QAAA,MAAM,aAAa,yIAQT,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,iBAAiB,EAAE,OAAO,CAAC;CAC5B,GAAG;IACF,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAChC,CA2BA;AAED,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,eAAe,EAC9B,aAAa,EAAE,OAAO,EACtB,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,MAAM,CAKR"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { collectPointerStringsFromDraftTools, resolveJsonPointer, } from "./jsonPointer.js";
|
|
2
|
+
import { mergeBootstrapToolArgumentsForPointers } from "./bootstrapArgsMerge.js";
|
|
3
|
+
const REASON_VALUES = [
|
|
4
|
+
"REGISTRY_INVALID",
|
|
5
|
+
"MERGE_FAILED",
|
|
6
|
+
"MODEL_NON_JSON",
|
|
7
|
+
"POINTERS_UNRESOLVED",
|
|
8
|
+
"ASSUMPTIONS_PRESENT",
|
|
9
|
+
"WARNINGS_PRESENT",
|
|
10
|
+
"OK",
|
|
11
|
+
];
|
|
12
|
+
export function scoreDraftReadiness(input) {
|
|
13
|
+
let pointerUnresolvedCount = 0;
|
|
14
|
+
try {
|
|
15
|
+
const doc = mergeBootstrapToolArgumentsForPointers(input.normalizedBootstrap);
|
|
16
|
+
const ptrs = collectPointerStringsFromDraftTools(input.draftToolsUnknown);
|
|
17
|
+
for (const p of ptrs) {
|
|
18
|
+
const v = resolveJsonPointer(doc, p);
|
|
19
|
+
if (v === undefined)
|
|
20
|
+
pointerUnresolvedCount += 1;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
pointerUnresolvedCount = 999;
|
|
25
|
+
}
|
|
26
|
+
const ass = input.assumptions.length > 0;
|
|
27
|
+
const warn = input.warnings.length > 0;
|
|
28
|
+
const ptr = pointerUnresolvedCount > 0;
|
|
29
|
+
if (!ass && !warn && !ptr) {
|
|
30
|
+
return { status: "ready", reasons: ["OK"] };
|
|
31
|
+
}
|
|
32
|
+
const reasons = [];
|
|
33
|
+
if (ass)
|
|
34
|
+
reasons.push("ASSUMPTIONS_PRESENT");
|
|
35
|
+
if (warn)
|
|
36
|
+
reasons.push("WARNINGS_PRESENT");
|
|
37
|
+
if (ptr)
|
|
38
|
+
reasons.push("POINTERS_UNRESOLVED");
|
|
39
|
+
return { status: "review", reasons };
|
|
40
|
+
}
|
|
41
|
+
export function modelLabelForGeneration(draftProvider, llmModelField, env) {
|
|
42
|
+
if (draftProvider === "local_ollama") {
|
|
43
|
+
return (env["AGENTSKEPTIC_DRAFT_LOCAL_MODEL"] ?? "").trim() || fallbackModel(llmModelField);
|
|
44
|
+
}
|
|
45
|
+
return (env["REGISTRY_DRAFT_MODEL"] ?? "").trim() || fallbackModel(llmModelField) || "gpt-4o-mini";
|
|
46
|
+
}
|
|
47
|
+
function fallbackModel(llmModelField) {
|
|
48
|
+
if (llmModelField !== null &&
|
|
49
|
+
typeof llmModelField === "object" &&
|
|
50
|
+
"model" in llmModelField &&
|
|
51
|
+
typeof llmModelField.model === "string") {
|
|
52
|
+
const m = (llmModelField.model ?? "").trim();
|
|
53
|
+
if (m.length > 0)
|
|
54
|
+
return m;
|
|
55
|
+
}
|
|
56
|
+
return "";
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=readiness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readiness.js","sourceRoot":"","sources":["../../src/registryDraft/readiness.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mCAAmC,EACnC,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,sCAAsC,EAAE,MAAM,yBAAyB,CAAC;AAIjF,MAAM,aAAa,GAAG;IACpB,kBAAkB;IAClB,cAAc;IACd,gBAAgB;IAChB,qBAAqB;IACrB,qBAAqB;IACrB,kBAAkB;IAClB,IAAI;CACI,CAAC;AAIX,MAAM,UAAU,mBAAmB,CAAC,KAKnC;IAIC,IAAI,sBAAsB,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,sCAAsC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC9E,MAAM,IAAI,GAAG,mCAAmC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC1E,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,CAAC,GAAG,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,KAAK,SAAS;gBAAE,sBAAsB,IAAI,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB,GAAG,GAAG,CAAC;IAC/B,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,sBAAsB,GAAG,CAAC,CAAC;IAEvC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;IAC9C,CAAC;IAED,MAAM,OAAO,GAA0B,EAAE,CAAC;IAC1C,IAAI,GAAG;QAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC7C,IAAI,IAAI;QAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC3C,IAAI,GAAG;QAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAE7C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,aAA8B,EAC9B,aAAsB,EACtB,GAAsB;IAEtB,IAAI,aAAa,KAAK,cAAc,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,aAAa,CAAC,aAAa,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,aAAa,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC;AACrG,CAAC;AAED,SAAS,aAAa,CAAC,aAAsB;IAC3C,IACE,aAAa,KAAK,IAAI;QACtB,OAAO,aAAa,KAAK,QAAQ;QACjC,OAAO,IAAK,aAAwB;QACpC,OAAQ,aAAqC,CAAC,KAAK,KAAK,QAAQ,EAChE,CAAC;QACD,MAAM,CAAC,GAAG,CAAE,aAAmC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACpE,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runRegistryDraftCli.d.ts","sourceRoot":"","sources":["../../src/registryDraft/runRegistryDraftCli.ts"],"names":[],"mappings":"AAkCA,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqF9E"}
|