openpond-sdk 0.0.18 → 0.1.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/LEARNING.md +44 -0
- package/README.md +2 -0
- package/dist/index.js +304 -180
- package/dist/index.js.map +4 -4
- package/dist/learning.js +99 -0
- package/dist/learning.js.map +7 -0
- package/dist/model-projects.js +61 -3
- package/dist/model-projects.js.map +2 -2
- package/dist/refiner.js +6 -6
- package/dist/refiner.js.map +1 -1
- package/dist/training.js +20 -2
- package/dist/training.js.map +2 -2
- package/dist/types/packages/sdk/src/index.d.ts +4 -0
- package/dist/types/packages/sdk/src/index.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/learning.d.ts +30 -0
- package/dist/types/packages/sdk/src/learning.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/model-projects.d.ts +368 -82
- package/dist/types/packages/sdk/src/model-projects.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training.d.ts +14 -14
- package/examples/learning/example.json +14 -0
- package/examples/learning/submit.py +57 -0
- package/examples/learning/submit.ts +20 -0
- package/package.json +12 -5
package/dist/index.js
CHANGED
|
@@ -1,3 +1,21 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
18
|
+
|
|
1
19
|
// ../cloud/dist/sandbox/client-handles.js
|
|
2
20
|
function createSandboxRuntimeNamespace(client) {
|
|
3
21
|
return {
|
|
@@ -2687,13 +2705,115 @@ function requiredId(value, label) {
|
|
|
2687
2705
|
return normalized;
|
|
2688
2706
|
}
|
|
2689
2707
|
|
|
2690
|
-
//
|
|
2691
|
-
|
|
2692
|
-
|
|
2693
|
-
|
|
2708
|
+
// src/learning.ts
|
|
2709
|
+
var learning_exports = {};
|
|
2710
|
+
__export(learning_exports, {
|
|
2711
|
+
OpenPondLearningClient: () => OpenPondLearningClient,
|
|
2712
|
+
OpenPondLearningError: () => OpenPondLearningError
|
|
2713
|
+
});
|
|
2714
|
+
__reExport(learning_exports, learning_star);
|
|
2715
|
+
__reExport(learning_exports, rewards_star);
|
|
2694
2716
|
import { z } from "zod";
|
|
2717
|
+
import {
|
|
2718
|
+
LearningCommandRequestSchema,
|
|
2719
|
+
LearningOperationResultSchema,
|
|
2720
|
+
LearningReadRequestSchema,
|
|
2721
|
+
assertLearningRequestJson,
|
|
2722
|
+
learningResourceSchemas
|
|
2723
|
+
} from "@openpond/evals/learning";
|
|
2724
|
+
import { assertBoundedTaskJson } from "@openpond/evals/task-schema";
|
|
2725
|
+
import * as learning_star from "@openpond/evals/learning";
|
|
2726
|
+
import * as rewards_star from "@openpond/evals/rewards";
|
|
2727
|
+
var OpenPondLearningError = class extends Error {
|
|
2728
|
+
constructor(status, code, message, details) {
|
|
2729
|
+
super(message);
|
|
2730
|
+
this.status = status;
|
|
2731
|
+
this.code = code;
|
|
2732
|
+
this.details = details;
|
|
2733
|
+
this.name = "OpenPondLearningError";
|
|
2734
|
+
}
|
|
2735
|
+
status;
|
|
2736
|
+
code;
|
|
2737
|
+
details;
|
|
2738
|
+
};
|
|
2739
|
+
var OpenPondLearningClient = class {
|
|
2740
|
+
#options;
|
|
2741
|
+
constructor(options) {
|
|
2742
|
+
if (!options.apiKey.trim() || !options.scope.trim()) throw new Error("Learning API key and scope are required.");
|
|
2743
|
+
const url = new URL(options.baseUrl);
|
|
2744
|
+
if (!["http:", "https:"].includes(url.protocol) || url.username || url.password || url.search || url.hash) throw new Error("Learning base URL must be an HTTP(S) endpoint without credentials, query, or fragment.");
|
|
2745
|
+
this.#options = { ...options, baseUrl: url.toString().replace(/\/+$/, "") };
|
|
2746
|
+
}
|
|
2747
|
+
async command(command, options = {}) {
|
|
2748
|
+
assertLearningRequestJson(command);
|
|
2749
|
+
const request = LearningCommandRequestSchema.parse({ scope: this.#options.scope, command });
|
|
2750
|
+
const result = LearningOperationResultSchema.parse(await this.#request("commands", request, options));
|
|
2751
|
+
if (result.operationId !== command.operationId) throw new OpenPondLearningError(502, "operation_identity_mismatch", "Learning response did not match the submitted operation.", null);
|
|
2752
|
+
return result;
|
|
2753
|
+
}
|
|
2754
|
+
submitExample(example, options = {}) {
|
|
2755
|
+
return this.command({ action: "submit_example", operationId: example.idempotencyKey, example }, options);
|
|
2756
|
+
}
|
|
2757
|
+
submitFeedback(feedback, options = {}) {
|
|
2758
|
+
return this.command({ action: "submit_feedback", operationId: feedback.idempotencyKey, feedback }, options);
|
|
2759
|
+
}
|
|
2760
|
+
async get(kind, id, revision, options = {}) {
|
|
2761
|
+
const request = LearningReadRequestSchema.parse({ action: "get", scope: this.#options.scope, kind, id, ...revision === void 0 ? {} : { revision } });
|
|
2762
|
+
return learningResourceSchemas[kind].parse(await this.#request("read", request, options));
|
|
2763
|
+
}
|
|
2764
|
+
async list(kind, query = {}, options = {}) {
|
|
2765
|
+
const request = LearningReadRequestSchema.parse({ action: "list", scope: this.#options.scope, kind, ...query });
|
|
2766
|
+
return z.object({ items: z.array(learningResourceSchemas[kind]).max(100), nextCursor: z.string().nullable() }).strict().parse(await this.#request("read", request, options));
|
|
2767
|
+
}
|
|
2768
|
+
async #request(endpoint, body, options) {
|
|
2769
|
+
assertBoundedTaskJson(body, 16777216);
|
|
2770
|
+
const response = await (this.#options.fetch ?? globalThis.fetch)(`${this.#options.baseUrl}/v1/learning/${endpoint}`, {
|
|
2771
|
+
method: "POST",
|
|
2772
|
+
headers: { Authorization: `Bearer ${this.#options.apiKey}`, "Content-Type": "application/json", Accept: "application/json", "X-OpenPond-Team-Id": this.#options.scope },
|
|
2773
|
+
body: JSON.stringify(body),
|
|
2774
|
+
signal: options.signal,
|
|
2775
|
+
redirect: "error"
|
|
2776
|
+
});
|
|
2777
|
+
const payload = await readBoundedLearningResponse(response);
|
|
2778
|
+
if (!response.ok) {
|
|
2779
|
+
const error = z.object({ code: z.string().optional(), error: z.string().optional() }).passthrough().safeParse(payload);
|
|
2780
|
+
throw new OpenPondLearningError(response.status, error.success ? error.data.code ?? "learning_request_failed" : "learning_request_failed", error.success ? error.data.error ?? `Learning request failed (${response.status}).` : `Learning request failed (${response.status}).`, payload);
|
|
2781
|
+
}
|
|
2782
|
+
return payload;
|
|
2783
|
+
}
|
|
2784
|
+
};
|
|
2785
|
+
async function readBoundedLearningResponse(response) {
|
|
2786
|
+
const maximumBytes = 16777216;
|
|
2787
|
+
const reader = response.body?.getReader();
|
|
2788
|
+
if (!reader) throw new OpenPondLearningError(response.status, "empty_response", "Learning response was empty.", null);
|
|
2789
|
+
const decoder = new TextDecoder();
|
|
2790
|
+
let bytes = 0;
|
|
2791
|
+
let text = "";
|
|
2792
|
+
try {
|
|
2793
|
+
while (true) {
|
|
2794
|
+
const next = await reader.read();
|
|
2795
|
+
if (next.done) break;
|
|
2796
|
+
bytes += next.value.byteLength;
|
|
2797
|
+
if (bytes > maximumBytes) throw new OpenPondLearningError(response.status, "response_too_large", "Learning response exceeded 16 MiB; request a smaller page.", null);
|
|
2798
|
+
text += decoder.decode(next.value, { stream: true });
|
|
2799
|
+
}
|
|
2800
|
+
text += decoder.decode();
|
|
2801
|
+
const value = JSON.parse(text);
|
|
2802
|
+
assertBoundedTaskJson(value, maximumBytes);
|
|
2803
|
+
return value;
|
|
2804
|
+
} finally {
|
|
2805
|
+
await reader.cancel();
|
|
2806
|
+
reader.releaseLock();
|
|
2807
|
+
}
|
|
2808
|
+
}
|
|
2809
|
+
|
|
2810
|
+
// ../harness/dist/refiner.js
|
|
2811
|
+
import { z as z4 } from "zod";
|
|
2695
2812
|
|
|
2696
|
-
//
|
|
2813
|
+
// ../harness/dist/common.js
|
|
2814
|
+
import { z as z2 } from "zod";
|
|
2815
|
+
|
|
2816
|
+
// ../harness/dist/sha256.js
|
|
2697
2817
|
var INITIAL_STATE = new Uint32Array([
|
|
2698
2818
|
1779033703,
|
|
2699
2819
|
3144134277,
|
|
@@ -2832,32 +2952,32 @@ function rotateRight(value, bits) {
|
|
|
2832
2952
|
return value >>> bits | value << 32 - bits;
|
|
2833
2953
|
}
|
|
2834
2954
|
|
|
2835
|
-
//
|
|
2955
|
+
// ../harness/dist/common.js
|
|
2836
2956
|
var MAX_PORTABLE_PATH_BYTES = 2e3;
|
|
2837
2957
|
var MAX_PORTABLE_ASSET_BYTES = 25e7;
|
|
2838
|
-
var ReleaseIdSchema =
|
|
2839
|
-
var ReleaseHashSchema =
|
|
2840
|
-
var ReleaseTimestampSchema =
|
|
2841
|
-
var MetadataSchema =
|
|
2842
|
-
var ImmutableReleaseRefSchema =
|
|
2958
|
+
var ReleaseIdSchema = z2.string().trim().min(1).max(240);
|
|
2959
|
+
var ReleaseHashSchema = z2.string().regex(/^[a-f0-9]{64}$/);
|
|
2960
|
+
var ReleaseTimestampSchema = z2.string().datetime({ offset: true });
|
|
2961
|
+
var MetadataSchema = z2.record(z2.string(), z2.unknown()).default({});
|
|
2962
|
+
var ImmutableReleaseRefSchema = z2.object({
|
|
2843
2963
|
id: ReleaseIdSchema,
|
|
2844
2964
|
contentHash: ReleaseHashSchema
|
|
2845
2965
|
}).strict();
|
|
2846
|
-
var ImmutableAssetRefSchema =
|
|
2966
|
+
var ImmutableAssetRefSchema = z2.object({
|
|
2847
2967
|
id: ReleaseIdSchema,
|
|
2848
|
-
path:
|
|
2968
|
+
path: z2.string().trim().min(1).max(MAX_PORTABLE_PATH_BYTES).refine(safeRelativePath),
|
|
2849
2969
|
contentHash: ReleaseHashSchema,
|
|
2850
|
-
sizeBytes:
|
|
2851
|
-
mediaType:
|
|
2852
|
-
visibility:
|
|
2970
|
+
sizeBytes: z2.number().int().nonnegative().max(MAX_PORTABLE_ASSET_BYTES),
|
|
2971
|
+
mediaType: z2.string().trim().min(1).max(200),
|
|
2972
|
+
visibility: z2.enum(["policy", "verifier", "host_private"])
|
|
2853
2973
|
}).strict();
|
|
2854
|
-
var ImmutableArtifactRefSchema =
|
|
2974
|
+
var ImmutableArtifactRefSchema = z2.object({
|
|
2855
2975
|
id: ReleaseIdSchema,
|
|
2856
2976
|
contentHash: ReleaseHashSchema,
|
|
2857
|
-
mediaType:
|
|
2858
|
-
sizeBytes:
|
|
2977
|
+
mediaType: z2.string().trim().min(1).max(200).nullable().default(null),
|
|
2978
|
+
sizeBytes: z2.number().int().nonnegative().max(MAX_PORTABLE_ASSET_BYTES).nullable().default(null)
|
|
2859
2979
|
}).strict();
|
|
2860
|
-
var FailureClassSchema =
|
|
2980
|
+
var FailureClassSchema = z2.enum([
|
|
2861
2981
|
"policy_failure",
|
|
2862
2982
|
"grader_failure",
|
|
2863
2983
|
"environment_failure",
|
|
@@ -2889,23 +3009,23 @@ function sortValue(value) {
|
|
|
2889
3009
|
return Object.fromEntries(Object.entries(value).sort(([left], [right]) => left.localeCompare(right)).map(([key, child]) => [key, sortValue(child)]));
|
|
2890
3010
|
}
|
|
2891
3011
|
|
|
2892
|
-
//
|
|
2893
|
-
import { z as
|
|
2894
|
-
var RefinerProposalRouteSchema =
|
|
2895
|
-
var RefinerExternalRouteSchema =
|
|
2896
|
-
var RefinerReviewInstructionSchema =
|
|
2897
|
-
id:
|
|
2898
|
-
text:
|
|
3012
|
+
// ../harness/dist/refiner-profiles.js
|
|
3013
|
+
import { z as z3 } from "zod";
|
|
3014
|
+
var RefinerProposalRouteSchema = z3.enum(["memory", "prompt", "skill", "agent"]);
|
|
3015
|
+
var RefinerExternalRouteSchema = z3.enum(["runtime", "product", "taskset", "training"]);
|
|
3016
|
+
var RefinerReviewInstructionSchema = z3.object({
|
|
3017
|
+
id: z3.string().trim().min(1).max(120).regex(/^[a-z0-9][a-z0-9._-]*$/),
|
|
3018
|
+
text: z3.string().trim().min(1).max(1e4)
|
|
2899
3019
|
}).strict();
|
|
2900
|
-
var RefinerReviewProfileSchema =
|
|
2901
|
-
schemaVersion:
|
|
2902
|
-
id:
|
|
2903
|
-
version:
|
|
2904
|
-
name:
|
|
2905
|
-
objective:
|
|
2906
|
-
instructions:
|
|
2907
|
-
allowedProposalRoutes:
|
|
2908
|
-
allowedExternalRoutes:
|
|
3020
|
+
var RefinerReviewProfileSchema = z3.object({
|
|
3021
|
+
schemaVersion: z3.literal("openpond.refinerReviewProfile.v1"),
|
|
3022
|
+
id: z3.string().trim().min(1).max(120).regex(/^[a-z0-9][a-z0-9._-]*$/),
|
|
3023
|
+
version: z3.string().trim().min(1).max(120),
|
|
3024
|
+
name: z3.string().trim().min(1).max(200),
|
|
3025
|
+
objective: z3.string().trim().min(1).max(1e4),
|
|
3026
|
+
instructions: z3.array(RefinerReviewInstructionSchema).max(100),
|
|
3027
|
+
allowedProposalRoutes: z3.array(RefinerProposalRouteSchema).max(4),
|
|
3028
|
+
allowedExternalRoutes: z3.array(RefinerExternalRouteSchema).max(4)
|
|
2909
3029
|
}).strict().superRefine((profile, context) => {
|
|
2910
3030
|
const instructionIds = profile.instructions.map((instruction) => instruction.id);
|
|
2911
3031
|
if (new Set(instructionIds).size !== instructionIds.length) {
|
|
@@ -2928,10 +3048,10 @@ var DEFAULT_REFINER_REVIEW_PROFILE = {
|
|
|
2928
3048
|
allowedProposalRoutes: ["memory", "prompt", "skill", "agent"],
|
|
2929
3049
|
allowedExternalRoutes: ["runtime", "product", "taskset", "training"]
|
|
2930
3050
|
};
|
|
2931
|
-
var RefinerReleaseSchema =
|
|
2932
|
-
schemaVersion:
|
|
2933
|
-
id:
|
|
2934
|
-
coreVersion:
|
|
3051
|
+
var RefinerReleaseSchema = z3.object({
|
|
3052
|
+
schemaVersion: z3.literal("openpond.refinerRelease.v1"),
|
|
3053
|
+
id: z3.string().trim().min(1).max(240),
|
|
3054
|
+
coreVersion: z3.string().trim().min(1).max(120),
|
|
2935
3055
|
coreHash: ReleaseHashSchema,
|
|
2936
3056
|
profile: RefinerReviewProfileSchema,
|
|
2937
3057
|
profileHash: ReleaseHashSchema,
|
|
@@ -2939,24 +3059,24 @@ var RefinerReleaseSchema = z2.object({
|
|
|
2939
3059
|
createdAt: ReleaseTimestampSchema,
|
|
2940
3060
|
contentHash: ReleaseHashSchema
|
|
2941
3061
|
}).strict();
|
|
2942
|
-
var RefinerBindingSchema =
|
|
2943
|
-
schemaVersion:
|
|
2944
|
-
channel:
|
|
2945
|
-
revision:
|
|
3062
|
+
var RefinerBindingSchema = z3.object({
|
|
3063
|
+
schemaVersion: z3.literal("openpond.refinerBinding.v1"),
|
|
3064
|
+
channel: z3.literal("active"),
|
|
3065
|
+
revision: z3.number().int().nonnegative(),
|
|
2946
3066
|
release: ImmutableReleaseRefSchema,
|
|
2947
3067
|
updatedAt: ReleaseTimestampSchema
|
|
2948
3068
|
}).strict();
|
|
2949
|
-
var RefinerTransitionReceiptSchema =
|
|
2950
|
-
schemaVersion:
|
|
2951
|
-
id:
|
|
2952
|
-
operation:
|
|
2953
|
-
bindingChanged:
|
|
3069
|
+
var RefinerTransitionReceiptSchema = z3.object({
|
|
3070
|
+
schemaVersion: z3.literal("openpond.refinerTransitionReceipt.v1"),
|
|
3071
|
+
id: z3.string().trim().min(1).max(240),
|
|
3072
|
+
operation: z3.enum(["initialize", "update", "activate", "rollback"]),
|
|
3073
|
+
bindingChanged: z3.boolean(),
|
|
2954
3074
|
previousRelease: ImmutableReleaseRefSchema.nullable(),
|
|
2955
3075
|
nextRelease: ImmutableReleaseRefSchema,
|
|
2956
|
-
actor:
|
|
2957
|
-
reason:
|
|
3076
|
+
actor: z3.string().trim().min(1).max(240),
|
|
3077
|
+
reason: z3.string().trim().min(1).max(1e4),
|
|
2958
3078
|
authoringSkillHash: ReleaseHashSchema.nullable(),
|
|
2959
|
-
validation:
|
|
3079
|
+
validation: z3.object({ valid: z3.boolean(), messages: z3.array(z3.string().max(2e3)).max(100) }).strict(),
|
|
2960
3080
|
createdAt: ReleaseTimestampSchema,
|
|
2961
3081
|
contentHash: ReleaseHashSchema
|
|
2962
3082
|
}).strict();
|
|
@@ -2998,32 +3118,32 @@ function serializeReviewProfile(profile) {
|
|
|
2998
3118
|
return canonicalJson(RefinerReviewProfileSchema.parse(profile));
|
|
2999
3119
|
}
|
|
3000
3120
|
|
|
3001
|
-
//
|
|
3002
|
-
var RefinerNoActionDecisionSchema =
|
|
3003
|
-
schemaVersion:
|
|
3004
|
-
decision:
|
|
3005
|
-
reason:
|
|
3121
|
+
// ../harness/dist/refiner.js
|
|
3122
|
+
var RefinerNoActionDecisionSchema = z4.object({
|
|
3123
|
+
schemaVersion: z4.literal("openpond.localHarnessRefinerDecision.v1"),
|
|
3124
|
+
decision: z4.literal("no_action"),
|
|
3125
|
+
reason: z4.string().trim().min(1).max(1e4)
|
|
3006
3126
|
}).strip();
|
|
3007
|
-
var RefinerExternalRouteDecisionSchema =
|
|
3008
|
-
schemaVersion:
|
|
3009
|
-
decision:
|
|
3010
|
-
route:
|
|
3011
|
-
summary:
|
|
3012
|
-
expectedOutcome:
|
|
3013
|
-
reason:
|
|
3127
|
+
var RefinerExternalRouteDecisionSchema = z4.object({
|
|
3128
|
+
schemaVersion: z4.literal("openpond.localHarnessRefinerDecision.v1"),
|
|
3129
|
+
decision: z4.literal("route"),
|
|
3130
|
+
route: z4.enum(["runtime", "product", "taskset", "training"]),
|
|
3131
|
+
summary: z4.string().trim().min(1).max(2e3),
|
|
3132
|
+
expectedOutcome: z4.string().trim().min(1).max(1e4),
|
|
3133
|
+
reason: z4.string().trim().min(1).max(1e4)
|
|
3014
3134
|
}).strip();
|
|
3015
|
-
var RefinerProposalDecisionSchema =
|
|
3016
|
-
schemaVersion:
|
|
3017
|
-
decision:
|
|
3018
|
-
route:
|
|
3019
|
-
operation:
|
|
3020
|
-
target:
|
|
3021
|
-
summary:
|
|
3022
|
-
createContent:
|
|
3023
|
-
find:
|
|
3024
|
-
replace:
|
|
3025
|
-
expectedOutcome:
|
|
3026
|
-
reason:
|
|
3135
|
+
var RefinerProposalDecisionSchema = z4.object({
|
|
3136
|
+
schemaVersion: z4.literal("openpond.localHarnessRefinerDecision.v1"),
|
|
3137
|
+
decision: z4.literal("propose"),
|
|
3138
|
+
route: z4.enum(["memory", "prompt", "skill", "agent"]),
|
|
3139
|
+
operation: z4.enum(["create", "update", "delete"]),
|
|
3140
|
+
target: z4.string().trim().min(1).max(2e3),
|
|
3141
|
+
summary: z4.string().trim().min(1).max(2e3),
|
|
3142
|
+
createContent: z4.string().min(1).max(2e4).nullable(),
|
|
3143
|
+
find: z4.string().min(1).max(8e3).nullable(),
|
|
3144
|
+
replace: z4.string().max(8e3).nullable(),
|
|
3145
|
+
expectedOutcome: z4.string().trim().min(1).max(1e4),
|
|
3146
|
+
reason: z4.string().trim().min(1).max(1e4)
|
|
3027
3147
|
}).strip().superRefine((decision, context) => {
|
|
3028
3148
|
if (decision.operation === "create" && (decision.createContent === null || decision.find !== null || decision.replace !== null)) {
|
|
3029
3149
|
context.addIssue({
|
|
@@ -3047,16 +3167,16 @@ var RefinerProposalDecisionSchema = z3.object({
|
|
|
3047
3167
|
});
|
|
3048
3168
|
}
|
|
3049
3169
|
});
|
|
3050
|
-
var LocalHarnessRefinerDecisionSchema =
|
|
3170
|
+
var LocalHarnessRefinerDecisionSchema = z4.discriminatedUnion("decision", [
|
|
3051
3171
|
RefinerNoActionDecisionSchema,
|
|
3052
3172
|
RefinerExternalRouteDecisionSchema,
|
|
3053
3173
|
RefinerProposalDecisionSchema
|
|
3054
3174
|
]);
|
|
3055
3175
|
var LocalHarnessRefinerDecisionV1Schema = LocalHarnessRefinerDecisionSchema;
|
|
3056
|
-
var HarnessRefinerEvidenceBasisSchema =
|
|
3057
|
-
kind:
|
|
3058
|
-
supportingEvidenceIds:
|
|
3059
|
-
counterevidence:
|
|
3176
|
+
var HarnessRefinerEvidenceBasisSchema = z4.object({
|
|
3177
|
+
kind: z4.enum(["single_deterministic", "recurrent_independent"]),
|
|
3178
|
+
supportingEvidenceIds: z4.array(z4.string().trim().min(1).max(2e3)).min(1).max(100),
|
|
3179
|
+
counterevidence: z4.array(z4.string().trim().min(1).max(2e3)).max(20)
|
|
3060
3180
|
}).strict().superRefine((basis, context) => {
|
|
3061
3181
|
if (new Set(basis.supportingEvidenceIds).size !== basis.supportingEvidenceIds.length) {
|
|
3062
3182
|
context.addIssue({
|
|
@@ -3073,33 +3193,33 @@ var HarnessRefinerEvidenceBasisSchema = z3.object({
|
|
|
3073
3193
|
});
|
|
3074
3194
|
}
|
|
3075
3195
|
});
|
|
3076
|
-
var RefinerNoActionDecisionV2Schema =
|
|
3077
|
-
schemaVersion:
|
|
3078
|
-
decision:
|
|
3079
|
-
reason:
|
|
3196
|
+
var RefinerNoActionDecisionV2Schema = z4.object({
|
|
3197
|
+
schemaVersion: z4.literal("openpond.localHarnessRefinerDecision.v2"),
|
|
3198
|
+
decision: z4.literal("no_action"),
|
|
3199
|
+
reason: z4.string().trim().min(1).max(1e4)
|
|
3080
3200
|
}).strict();
|
|
3081
|
-
var RefinerExternalRouteDecisionV2Schema =
|
|
3082
|
-
schemaVersion:
|
|
3083
|
-
decision:
|
|
3084
|
-
route:
|
|
3085
|
-
summary:
|
|
3201
|
+
var RefinerExternalRouteDecisionV2Schema = z4.object({
|
|
3202
|
+
schemaVersion: z4.literal("openpond.localHarnessRefinerDecision.v2"),
|
|
3203
|
+
decision: z4.literal("route"),
|
|
3204
|
+
route: z4.enum(["runtime", "product", "taskset", "training"]),
|
|
3205
|
+
summary: z4.string().trim().min(1).max(2e3),
|
|
3086
3206
|
evidenceBasis: HarnessRefinerEvidenceBasisSchema,
|
|
3087
|
-
expectedOutcome:
|
|
3088
|
-
reason:
|
|
3207
|
+
expectedOutcome: z4.string().trim().min(1).max(1e4),
|
|
3208
|
+
reason: z4.string().trim().min(1).max(1e4)
|
|
3089
3209
|
}).strict();
|
|
3090
|
-
var RefinerProposalDecisionV2Schema =
|
|
3091
|
-
schemaVersion:
|
|
3092
|
-
decision:
|
|
3093
|
-
route:
|
|
3094
|
-
operation:
|
|
3095
|
-
target:
|
|
3096
|
-
summary:
|
|
3210
|
+
var RefinerProposalDecisionV2Schema = z4.object({
|
|
3211
|
+
schemaVersion: z4.literal("openpond.localHarnessRefinerDecision.v2"),
|
|
3212
|
+
decision: z4.literal("propose"),
|
|
3213
|
+
route: z4.enum(["memory", "prompt", "skill", "agent"]),
|
|
3214
|
+
operation: z4.enum(["create", "update", "delete"]),
|
|
3215
|
+
target: z4.string().trim().min(1).max(2e3),
|
|
3216
|
+
summary: z4.string().trim().min(1).max(2e3),
|
|
3097
3217
|
evidenceBasis: HarnessRefinerEvidenceBasisSchema,
|
|
3098
|
-
createContent:
|
|
3099
|
-
find:
|
|
3100
|
-
replace:
|
|
3101
|
-
expectedOutcome:
|
|
3102
|
-
reason:
|
|
3218
|
+
createContent: z4.string().min(1).max(2e4).nullable(),
|
|
3219
|
+
find: z4.string().min(1).max(8e3).nullable(),
|
|
3220
|
+
replace: z4.string().max(8e3).nullable(),
|
|
3221
|
+
expectedOutcome: z4.string().trim().min(1).max(1e4),
|
|
3222
|
+
reason: z4.string().trim().min(1).max(1e4)
|
|
3103
3223
|
}).strict().superRefine((decision, context) => {
|
|
3104
3224
|
if (decision.operation === "create" && (decision.createContent === null || decision.find !== null || decision.replace !== null)) {
|
|
3105
3225
|
context.addIssue({
|
|
@@ -3123,122 +3243,122 @@ var RefinerProposalDecisionV2Schema = z3.object({
|
|
|
3123
3243
|
});
|
|
3124
3244
|
}
|
|
3125
3245
|
});
|
|
3126
|
-
var LocalHarnessRefinerDecisionV2Schema =
|
|
3246
|
+
var LocalHarnessRefinerDecisionV2Schema = z4.discriminatedUnion("decision", [
|
|
3127
3247
|
RefinerNoActionDecisionV2Schema,
|
|
3128
3248
|
RefinerExternalRouteDecisionV2Schema,
|
|
3129
3249
|
RefinerProposalDecisionV2Schema
|
|
3130
3250
|
]);
|
|
3131
|
-
var LocalHarnessRefinerDecisionAnySchema =
|
|
3251
|
+
var LocalHarnessRefinerDecisionAnySchema = z4.union([
|
|
3132
3252
|
LocalHarnessRefinerDecisionV1Schema,
|
|
3133
3253
|
LocalHarnessRefinerDecisionV2Schema
|
|
3134
3254
|
]);
|
|
3135
|
-
var HarnessRefinerCapabilitiesSchema =
|
|
3136
|
-
memory:
|
|
3137
|
-
prompt:
|
|
3138
|
-
skill:
|
|
3139
|
-
agent:
|
|
3255
|
+
var HarnessRefinerCapabilitiesSchema = z4.object({
|
|
3256
|
+
memory: z4.boolean(),
|
|
3257
|
+
prompt: z4.boolean(),
|
|
3258
|
+
skill: z4.boolean(),
|
|
3259
|
+
agent: z4.boolean()
|
|
3140
3260
|
}).strict();
|
|
3141
|
-
var SourceKindSchema =
|
|
3142
|
-
var RefinerSourceFileSchema =
|
|
3143
|
-
path:
|
|
3261
|
+
var SourceKindSchema = z4.enum(["memory", "instruction", "skill", "agent"]);
|
|
3262
|
+
var RefinerSourceFileSchema = z4.object({
|
|
3263
|
+
path: z4.string().trim().min(1).max(2e3),
|
|
3144
3264
|
kind: SourceKindSchema,
|
|
3145
|
-
content:
|
|
3146
|
-
loaded:
|
|
3265
|
+
content: z4.string().max(6e4),
|
|
3266
|
+
loaded: z4.boolean()
|
|
3147
3267
|
}).strict();
|
|
3148
|
-
var RefinerSourceCatalogEntrySchema =
|
|
3149
|
-
path:
|
|
3268
|
+
var RefinerSourceCatalogEntrySchema = z4.object({
|
|
3269
|
+
path: z4.string().trim().min(1).max(2e3),
|
|
3150
3270
|
kind: SourceKindSchema,
|
|
3151
|
-
loaded:
|
|
3271
|
+
loaded: z4.boolean()
|
|
3152
3272
|
}).strict();
|
|
3153
|
-
var LocalHarnessRefinerEvidenceSchema =
|
|
3273
|
+
var LocalHarnessRefinerEvidenceSchema = z4.object({
|
|
3154
3274
|
capabilities: HarnessRefinerCapabilitiesSchema,
|
|
3155
|
-
trigger:
|
|
3156
|
-
observations:
|
|
3157
|
-
admissibleEvidenceIds:
|
|
3158
|
-
reviewPacket:
|
|
3159
|
-
currentTurn:
|
|
3160
|
-
id:
|
|
3161
|
-
status:
|
|
3162
|
-
error:
|
|
3163
|
-
prompt:
|
|
3164
|
-
assistantOutput:
|
|
3165
|
-
assistantOutputLinkCount:
|
|
3275
|
+
trigger: z4.record(z4.string(), z4.unknown()),
|
|
3276
|
+
observations: z4.array(z4.record(z4.string(), z4.unknown())).max(20),
|
|
3277
|
+
admissibleEvidenceIds: z4.array(z4.string().trim().min(1).max(2e3)).max(1e4),
|
|
3278
|
+
reviewPacket: z4.object({
|
|
3279
|
+
currentTurn: z4.object({
|
|
3280
|
+
id: z4.string().trim().min(1).max(2e3),
|
|
3281
|
+
status: z4.string().trim().min(1).max(100).nullable(),
|
|
3282
|
+
error: z4.string().max(2100).nullable(),
|
|
3283
|
+
prompt: z4.string().max(8100).nullable(),
|
|
3284
|
+
assistantOutput: z4.string().max(8100).nullable(),
|
|
3285
|
+
assistantOutputLinkCount: z4.number().int().nonnegative()
|
|
3166
3286
|
}).strict(),
|
|
3167
|
-
priorConversation:
|
|
3168
|
-
turnId:
|
|
3169
|
-
status:
|
|
3170
|
-
prompt:
|
|
3171
|
-
assistantOutput:
|
|
3287
|
+
priorConversation: z4.array(z4.object({
|
|
3288
|
+
turnId: z4.string().trim().min(1).max(2e3),
|
|
3289
|
+
status: z4.string().trim().min(1).max(100).nullable(),
|
|
3290
|
+
prompt: z4.string().max(3100).nullable(),
|
|
3291
|
+
assistantOutput: z4.string().max(3100).nullable()
|
|
3172
3292
|
}).strict()).max(3),
|
|
3173
|
-
timeline:
|
|
3174
|
-
artifacts:
|
|
3175
|
-
artifactDiagnostics:
|
|
3176
|
-
executionProfile:
|
|
3177
|
-
modelRequestCount:
|
|
3178
|
-
failedModelRequestCount:
|
|
3179
|
-
promptTokens:
|
|
3180
|
-
completionTokens:
|
|
3181
|
-
totalTokens:
|
|
3182
|
-
toolFailureCount:
|
|
3183
|
-
retryCount:
|
|
3184
|
-
recoveryCount:
|
|
3293
|
+
timeline: z4.array(z4.record(z4.string(), z4.unknown())).max(60),
|
|
3294
|
+
artifacts: z4.array(z4.record(z4.string(), z4.unknown())).max(30),
|
|
3295
|
+
artifactDiagnostics: z4.array(z4.record(z4.string(), z4.unknown())).max(20),
|
|
3296
|
+
executionProfile: z4.object({
|
|
3297
|
+
modelRequestCount: z4.number().int().nonnegative(),
|
|
3298
|
+
failedModelRequestCount: z4.number().int().nonnegative(),
|
|
3299
|
+
promptTokens: z4.number().int().nonnegative(),
|
|
3300
|
+
completionTokens: z4.number().int().nonnegative(),
|
|
3301
|
+
totalTokens: z4.number().int().nonnegative(),
|
|
3302
|
+
toolFailureCount: z4.number().int().nonnegative(),
|
|
3303
|
+
retryCount: z4.number().int().nonnegative(),
|
|
3304
|
+
recoveryCount: z4.number().int().nonnegative()
|
|
3185
3305
|
}).strict(),
|
|
3186
|
-
priorIncidents:
|
|
3187
|
-
truncation:
|
|
3188
|
-
timelineEventCount:
|
|
3189
|
-
includedTimelineEventCount:
|
|
3190
|
-
timelineTruncated:
|
|
3306
|
+
priorIncidents: z4.array(z4.record(z4.string(), z4.unknown())).max(3),
|
|
3307
|
+
truncation: z4.object({
|
|
3308
|
+
timelineEventCount: z4.number().int().nonnegative(),
|
|
3309
|
+
includedTimelineEventCount: z4.number().int().nonnegative(),
|
|
3310
|
+
timelineTruncated: z4.boolean()
|
|
3191
3311
|
}).strict()
|
|
3192
3312
|
}).strict(),
|
|
3193
|
-
runtimeActivation:
|
|
3313
|
+
runtimeActivation: z4.object({
|
|
3194
3314
|
admittedRelease: ImmutableReleaseRefSchema,
|
|
3195
3315
|
currentRelease: ImmutableReleaseRefSchema,
|
|
3196
|
-
rebasedOntoCurrent:
|
|
3197
|
-
admittedSourceFiles:
|
|
3198
|
-
admittedSourceCatalog:
|
|
3316
|
+
rebasedOntoCurrent: z4.boolean(),
|
|
3317
|
+
admittedSourceFiles: z4.array(RefinerSourceFileSchema).max(100),
|
|
3318
|
+
admittedSourceCatalog: z4.array(RefinerSourceCatalogEntrySchema).max(1e3)
|
|
3199
3319
|
}).strict(),
|
|
3200
|
-
sourceFiles:
|
|
3201
|
-
sourceCatalog:
|
|
3202
|
-
additionalEvidence:
|
|
3320
|
+
sourceFiles: z4.array(RefinerSourceFileSchema).max(100),
|
|
3321
|
+
sourceCatalog: z4.array(RefinerSourceCatalogEntrySchema).max(1e3),
|
|
3322
|
+
additionalEvidence: z4.unknown().nullable().optional()
|
|
3203
3323
|
}).strict();
|
|
3204
3324
|
var REFINER_CORE_VERSION = "openpond.refinerCore.v2";
|
|
3205
|
-
var OverlayRefSchema =
|
|
3206
|
-
id:
|
|
3207
|
-
revision:
|
|
3325
|
+
var OverlayRefSchema = z4.object({
|
|
3326
|
+
id: z4.string().trim().min(1).max(240),
|
|
3327
|
+
revision: z4.number().int().nonnegative(),
|
|
3208
3328
|
contentHash: ReleaseHashSchema
|
|
3209
3329
|
}).strict();
|
|
3210
|
-
var HostedHarnessRefinerRequestSchema =
|
|
3211
|
-
schemaVersion:
|
|
3212
|
-
requestId:
|
|
3213
|
-
idempotencyKey:
|
|
3330
|
+
var HostedHarnessRefinerRequestSchema = z4.object({
|
|
3331
|
+
schemaVersion: z4.literal("openpond.hostedHarnessRefinerRequest.v2"),
|
|
3332
|
+
requestId: z4.string().trim().min(1).max(240),
|
|
3333
|
+
idempotencyKey: z4.string().trim().min(1).max(240),
|
|
3214
3334
|
evidenceHash: ReleaseHashSchema,
|
|
3215
|
-
harness:
|
|
3335
|
+
harness: z4.object({
|
|
3216
3336
|
admittedRelease: ImmutableReleaseRefSchema,
|
|
3217
3337
|
currentRelease: ImmutableReleaseRefSchema,
|
|
3218
3338
|
overlay: OverlayRefSchema,
|
|
3219
|
-
workspace:
|
|
3220
|
-
id:
|
|
3221
|
-
revision:
|
|
3339
|
+
workspace: z4.object({
|
|
3340
|
+
id: z4.string().trim().min(1).max(240),
|
|
3341
|
+
revision: z4.number().int().nonnegative(),
|
|
3222
3342
|
sourceRevision: ReleaseHashSchema,
|
|
3223
|
-
channelRevision:
|
|
3343
|
+
channelRevision: z4.number().int().nonnegative()
|
|
3224
3344
|
}).strict(),
|
|
3225
3345
|
capabilities: HarnessRefinerCapabilitiesSchema
|
|
3226
3346
|
}).strict(),
|
|
3227
3347
|
evidence: LocalHarnessRefinerEvidenceSchema
|
|
3228
3348
|
}).strict();
|
|
3229
|
-
var HostedHarnessRefinerUsageSchema =
|
|
3230
|
-
promptTokens:
|
|
3231
|
-
completionTokens:
|
|
3232
|
-
totalTokens:
|
|
3349
|
+
var HostedHarnessRefinerUsageSchema = z4.object({
|
|
3350
|
+
promptTokens: z4.number().int().nonnegative(),
|
|
3351
|
+
completionTokens: z4.number().int().nonnegative(),
|
|
3352
|
+
totalTokens: z4.number().int().nonnegative()
|
|
3233
3353
|
}).strict();
|
|
3234
|
-
var HostedHarnessRefinerResponseSchema =
|
|
3235
|
-
schemaVersion:
|
|
3236
|
-
requestId:
|
|
3354
|
+
var HostedHarnessRefinerResponseSchema = z4.object({
|
|
3355
|
+
schemaVersion: z4.literal("openpond.hostedHarnessRefinerResponse.v2"),
|
|
3356
|
+
requestId: z4.string().trim().min(1).max(240),
|
|
3237
3357
|
evidenceHash: ReleaseHashSchema,
|
|
3238
3358
|
admittedRelease: ImmutableReleaseRefSchema,
|
|
3239
3359
|
currentRelease: ImmutableReleaseRefSchema,
|
|
3240
3360
|
decision: LocalHarnessRefinerDecisionV2Schema,
|
|
3241
|
-
serviceRevision:
|
|
3361
|
+
serviceRevision: z4.string().trim().min(1).max(240),
|
|
3242
3362
|
usage: HostedHarnessRefinerUsageSchema
|
|
3243
3363
|
}).strict();
|
|
3244
3364
|
|
|
@@ -3257,10 +3377,12 @@ var OpenPondClient = class {
|
|
|
3257
3377
|
workflows;
|
|
3258
3378
|
actions;
|
|
3259
3379
|
profileActions;
|
|
3380
|
+
learning;
|
|
3260
3381
|
constructor(options) {
|
|
3261
3382
|
const apiKey = options.apiKey.trim();
|
|
3262
3383
|
if (!apiKey) throw new Error("OpenPond API key is required");
|
|
3263
3384
|
const apiBaseUrl = options.baseUrl?.trim() || "https://api.openpond.ai";
|
|
3385
|
+
this.learning = (scope) => new OpenPondLearningClient({ apiKey, baseUrl: apiBaseUrl, scope });
|
|
3264
3386
|
this.sandboxes = createOpenPondSandboxClient({
|
|
3265
3387
|
apiKey,
|
|
3266
3388
|
baseUrl: apiBaseUrl,
|
|
@@ -3284,6 +3406,8 @@ export {
|
|
|
3284
3406
|
DEFAULT_REFINER_REVIEW_PROFILE,
|
|
3285
3407
|
OpenPondApiError,
|
|
3286
3408
|
OpenPondClient,
|
|
3409
|
+
OpenPondLearningClient,
|
|
3410
|
+
OpenPondLearningError,
|
|
3287
3411
|
OpenPondProfileActionsClient,
|
|
3288
3412
|
OpenPondProjectActionsClient,
|
|
3289
3413
|
OpenPondSandboxClient,
|