openpond-sdk 0.0.17 → 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 +62 -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 +22 -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 +396 -82
- package/dist/types/packages/sdk/src/model-projects.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training.d.ts +19 -14
- package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
- package/examples/learning/example.json +14 -0
- package/examples/learning/submit.py +57 -0
- package/examples/learning/submit.ts +20 -0
- package/fixtures/training/v2/policy-optimize.valid.json +2 -1
- package/package.json +12 -5
|
@@ -46,11 +46,11 @@ export declare const TrainingJobStateSchema: z.ZodEnum<{
|
|
|
46
46
|
running: "running";
|
|
47
47
|
failed: "failed";
|
|
48
48
|
queued: "queued";
|
|
49
|
+
cancelled: "cancelled";
|
|
50
|
+
cancelling: "cancelling";
|
|
49
51
|
admitting: "admitting";
|
|
50
52
|
provisioning: "provisioning";
|
|
51
53
|
stopping: "stopping";
|
|
52
|
-
cancelling: "cancelling";
|
|
53
|
-
cancelled: "cancelled";
|
|
54
54
|
}>;
|
|
55
55
|
export declare const TrainingCapabilityRequirementSchema: z.ZodObject<{
|
|
56
56
|
id: z.ZodString;
|
|
@@ -459,6 +459,11 @@ export declare const TrainingJobSubmissionSchema: z.ZodObject<{
|
|
|
459
459
|
version: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
460
460
|
required: z.ZodDefault<z.ZodBoolean>;
|
|
461
461
|
}, z.core.$strict>>;
|
|
462
|
+
placementObjective: z.ZodEnum<{
|
|
463
|
+
fast: "fast";
|
|
464
|
+
balanced: "balanced";
|
|
465
|
+
economical: "economical";
|
|
466
|
+
}>;
|
|
462
467
|
budget: z.ZodObject<{
|
|
463
468
|
maximumSpendUsd: z.ZodNumber;
|
|
464
469
|
maximumWallSeconds: z.ZodNumber;
|
|
@@ -492,11 +497,11 @@ export declare const TrainingJobSchema: z.ZodObject<{
|
|
|
492
497
|
running: "running";
|
|
493
498
|
failed: "failed";
|
|
494
499
|
queued: "queued";
|
|
500
|
+
cancelled: "cancelled";
|
|
501
|
+
cancelling: "cancelling";
|
|
495
502
|
admitting: "admitting";
|
|
496
503
|
provisioning: "provisioning";
|
|
497
504
|
stopping: "stopping";
|
|
498
|
-
cancelling: "cancelling";
|
|
499
|
-
cancelled: "cancelled";
|
|
500
505
|
}>;
|
|
501
506
|
phase: z.ZodString;
|
|
502
507
|
version: z.ZodNumber;
|
|
@@ -532,11 +537,11 @@ export declare const TrainingJobPageSchema: z.ZodObject<{
|
|
|
532
537
|
running: "running";
|
|
533
538
|
failed: "failed";
|
|
534
539
|
queued: "queued";
|
|
540
|
+
cancelled: "cancelled";
|
|
541
|
+
cancelling: "cancelling";
|
|
535
542
|
admitting: "admitting";
|
|
536
543
|
provisioning: "provisioning";
|
|
537
544
|
stopping: "stopping";
|
|
538
|
-
cancelling: "cancelling";
|
|
539
|
-
cancelled: "cancelled";
|
|
540
545
|
}>;
|
|
541
546
|
phase: z.ZodString;
|
|
542
547
|
version: z.ZodNumber;
|
|
@@ -587,11 +592,11 @@ export declare const TrainingJobOutputSchema: z.ZodObject<{
|
|
|
587
592
|
id: z.ZodString;
|
|
588
593
|
jobId: z.ZodString;
|
|
589
594
|
kind: z.ZodEnum<{
|
|
595
|
+
evaluation: "evaluation";
|
|
590
596
|
checkpoint: "checkpoint";
|
|
591
597
|
adapter: "adapter";
|
|
592
598
|
scorer: "scorer";
|
|
593
599
|
metrics: "metrics";
|
|
594
|
-
evaluation: "evaluation";
|
|
595
600
|
trace: "trace";
|
|
596
601
|
receipt: "receipt";
|
|
597
602
|
}>;
|
|
@@ -644,11 +649,11 @@ export declare const TrainingJobOutputsSchema: z.ZodObject<{
|
|
|
644
649
|
id: z.ZodString;
|
|
645
650
|
jobId: z.ZodString;
|
|
646
651
|
kind: z.ZodEnum<{
|
|
652
|
+
evaluation: "evaluation";
|
|
647
653
|
checkpoint: "checkpoint";
|
|
648
654
|
adapter: "adapter";
|
|
649
655
|
scorer: "scorer";
|
|
650
656
|
metrics: "metrics";
|
|
651
|
-
evaluation: "evaluation";
|
|
652
657
|
trace: "trace";
|
|
653
658
|
receipt: "receipt";
|
|
654
659
|
}>;
|
|
@@ -786,7 +791,7 @@ export declare function createTrainingClient(input: {
|
|
|
786
791
|
portableProjectId: string;
|
|
787
792
|
sourceProjectRevision: number;
|
|
788
793
|
submissionHash: string;
|
|
789
|
-
state: "succeeded" | "running" | "failed" | "queued" | "
|
|
794
|
+
state: "succeeded" | "running" | "failed" | "queued" | "cancelled" | "cancelling" | "admitting" | "provisioning" | "stopping";
|
|
790
795
|
phase: string;
|
|
791
796
|
version: number;
|
|
792
797
|
progress: number;
|
|
@@ -817,7 +822,7 @@ export declare function createTrainingClient(input: {
|
|
|
817
822
|
portableProjectId: string;
|
|
818
823
|
sourceProjectRevision: number;
|
|
819
824
|
submissionHash: string;
|
|
820
|
-
state: "succeeded" | "running" | "failed" | "queued" | "
|
|
825
|
+
state: "succeeded" | "running" | "failed" | "queued" | "cancelled" | "cancelling" | "admitting" | "provisioning" | "stopping";
|
|
821
826
|
phase: string;
|
|
822
827
|
version: number;
|
|
823
828
|
progress: number;
|
|
@@ -844,7 +849,7 @@ export declare function createTrainingClient(input: {
|
|
|
844
849
|
portableProjectId: string;
|
|
845
850
|
sourceProjectRevision: number;
|
|
846
851
|
submissionHash: string;
|
|
847
|
-
state: "succeeded" | "running" | "failed" | "queued" | "
|
|
852
|
+
state: "succeeded" | "running" | "failed" | "queued" | "cancelled" | "cancelling" | "admitting" | "provisioning" | "stopping";
|
|
848
853
|
phase: string;
|
|
849
854
|
version: number;
|
|
850
855
|
progress: number;
|
|
@@ -869,7 +874,7 @@ export declare function createTrainingClient(input: {
|
|
|
869
874
|
portableProjectId: string;
|
|
870
875
|
sourceProjectRevision: number;
|
|
871
876
|
submissionHash: string;
|
|
872
|
-
state: "succeeded" | "running" | "failed" | "queued" | "
|
|
877
|
+
state: "succeeded" | "running" | "failed" | "queued" | "cancelled" | "cancelling" | "admitting" | "provisioning" | "stopping";
|
|
873
878
|
phase: string;
|
|
874
879
|
version: number;
|
|
875
880
|
progress: number;
|
|
@@ -894,7 +899,7 @@ export declare function createTrainingClient(input: {
|
|
|
894
899
|
portableProjectId: string;
|
|
895
900
|
sourceProjectRevision: number;
|
|
896
901
|
submissionHash: string;
|
|
897
|
-
state: "succeeded" | "running" | "failed" | "queued" | "
|
|
902
|
+
state: "succeeded" | "running" | "failed" | "queued" | "cancelled" | "cancelling" | "admitting" | "provisioning" | "stopping";
|
|
898
903
|
phase: string;
|
|
899
904
|
version: number;
|
|
900
905
|
progress: number;
|
|
@@ -927,7 +932,7 @@ export declare function createTrainingClient(input: {
|
|
|
927
932
|
schemaVersion: "openpond.trainingJobOutput.v2";
|
|
928
933
|
id: string;
|
|
929
934
|
jobId: string;
|
|
930
|
-
kind: "
|
|
935
|
+
kind: "evaluation" | "checkpoint" | "adapter" | "scorer" | "metrics" | "trace" | "receipt";
|
|
931
936
|
artifactRef: string;
|
|
932
937
|
contentHash: string;
|
|
933
938
|
sizeBytes: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"training.d.ts","sourceRoot":"","sources":["../../../../../src/training.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmBxB,OAAO,EACL,4BAA4B,EAC5B,gCAAgC,EAChC,+BAA+B,EAC/B,iCAAiC,EACjC,iCAAiC,EACjC,qBAAqB,EACrB,0BAA0B,EAC1B,aAAa,EACb,uBAAuB,EACvB,eAAe,EACf,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAMvB;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;kBASnC,CAAC;AAEZ,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;kBAU7B,CAAC;AAEZ,wBAAsB,+BAA+B,CACnD,MAAM,EAAE,IAAI,CAAC,2BAA2B,EAAE,aAAa,CAAC,GAAG,2BAA2B,GACrF,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED,wBAAsB,yCAAyC,CAC7D,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,2BAA2B,CAAC,CAetC;AAED,eAAO,MAAM,qBAAqB;;;EAGhC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;EAUjC,CAAC;AAEH,eAAO,MAAM,mCAAmC;;;;kBAMrC,CAAC;AAEZ,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAiBzB,CAAC;AAEZ,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAclC,CAAC;AA+BZ,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAWjC,CAAC;AAEZ,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAGnC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;kBAS3B,CAAC;AAEZ,eAAO,MAAM,2BAA2B
|
|
1
|
+
{"version":3,"file":"training.d.ts","sourceRoot":"","sources":["../../../../../src/training.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"idempotencyKey": "arithmetic-example-001-attempt-001",
|
|
3
|
+
"exampleId": "arithmetic-example-001",
|
|
4
|
+
"attemptId": "attempt-001",
|
|
5
|
+
"occurredAt": "2026-09-06T12:00:00.000Z",
|
|
6
|
+
"familyKey": "arithmetic-two-plus-two",
|
|
7
|
+
"split": "train",
|
|
8
|
+
"input": { "question": "What is two plus two?" },
|
|
9
|
+
"observedOutput": { "answer": "5" },
|
|
10
|
+
"expected": { "answer": "4" },
|
|
11
|
+
"evaluatorContext": { "explanation": "Integer addition." },
|
|
12
|
+
"assets": [],
|
|
13
|
+
"provenance": { "sourceRecordRef": null, "mappingHash": null }
|
|
14
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"""python3 submit.py SOURCE_ID example.json (Python standard library only)."""
|
|
2
|
+
import json
|
|
3
|
+
import os
|
|
4
|
+
import sys
|
|
5
|
+
import urllib.error
|
|
6
|
+
import urllib.parse
|
|
7
|
+
import urllib.request
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class NoRedirect(urllib.request.HTTPRedirectHandler):
|
|
11
|
+
def redirect_request(self, req, fp, code, msg, headers, newurl):
|
|
12
|
+
return None
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def main():
|
|
16
|
+
if len(sys.argv) != 3:
|
|
17
|
+
raise ValueError("Usage: submit.py SOURCE_ID example.json")
|
|
18
|
+
source_id, filename = sys.argv[1:]
|
|
19
|
+
endpoint = os.environ["OPENPOND_API_URL"].rstrip("/")
|
|
20
|
+
parsed = urllib.parse.urlparse(endpoint)
|
|
21
|
+
if parsed.scheme not in ("http", "https") or not parsed.hostname or parsed.username or parsed.password or parsed.query or parsed.fragment:
|
|
22
|
+
raise ValueError("Use an HTTP(S) API URL without credentials, query or fragment.")
|
|
23
|
+
scope = os.environ["OPENPOND_LEARNING_SCOPE"]
|
|
24
|
+
token = os.environ["OPENPOND_API_KEY"]
|
|
25
|
+
opener = urllib.request.build_opener(NoRedirect())
|
|
26
|
+
|
|
27
|
+
def post(route, payload):
|
|
28
|
+
body = json.dumps(payload, allow_nan=False).encode("utf-8")
|
|
29
|
+
if len(body) > 16_777_216:
|
|
30
|
+
raise ValueError("Request exceeds 16 MiB.")
|
|
31
|
+
request = urllib.request.Request(endpoint + "/v1/learning/" + route, data=body, headers={"Authorization": "Bearer " + token, "Content-Type": "application/json", "Accept": "application/json", "X-OpenPond-Team-Id": scope}, method="POST")
|
|
32
|
+
try:
|
|
33
|
+
with opener.open(request, timeout=60) as response:
|
|
34
|
+
result = response.read(16_777_217)
|
|
35
|
+
if len(result) > 16_777_216:
|
|
36
|
+
raise ValueError("Response exceeds 16 MiB.")
|
|
37
|
+
return json.loads(result)
|
|
38
|
+
except urllib.error.HTTPError as error:
|
|
39
|
+
# Do not print request headers or echoed evidence from error bodies.
|
|
40
|
+
raise RuntimeError("Learning API rejected the request (HTTP %s)." % error.code) from None
|
|
41
|
+
|
|
42
|
+
source = post("read", {"action": "get", "scope": scope, "kind": "source", "id": source_id})
|
|
43
|
+
with open(filename, encoding="utf-8") as handle:
|
|
44
|
+
example = json.load(handle)
|
|
45
|
+
example.update(schemaVersion="openpond.taskExample.v1", sourceId=source_id, taskDefinition=source["taskDefinition"])
|
|
46
|
+
operation_id = example["idempotencyKey"]
|
|
47
|
+
result = post("commands", {"scope": scope, "command": {"action": "submit_example", "operationId": operation_id, "example": example}})
|
|
48
|
+
if result["operationId"] != operation_id:
|
|
49
|
+
raise RuntimeError("Operation identity mismatch.")
|
|
50
|
+
evidence = result["resources"][0]
|
|
51
|
+
if evidence["schemaVersion"] != "openpond.taskEvidence.v1":
|
|
52
|
+
raise RuntimeError("Unexpected resource type.")
|
|
53
|
+
print(json.dumps({"operationId": operation_id, "evidenceId": evidence["id"], "revision": evidence["revision"], "contentHash": evidence["contentHash"]}))
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
if __name__ == "__main__":
|
|
57
|
+
main()
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { OpenPondLearningClient, TaskExampleSubmissionSchema, TaskEvidenceSchema } from "openpond-sdk/learning";
|
|
3
|
+
|
|
4
|
+
// node --experimental-strip-types submit.ts SOURCE_ID example.json
|
|
5
|
+
// Set OPENPOND_API_KEY, OPENPOND_API_URL and OPENPOND_LEARNING_SCOPE in your shell.
|
|
6
|
+
function required(name: string): string {
|
|
7
|
+
const value = process.env[name];
|
|
8
|
+
if (!value) throw new Error(`Set ${name} before running this example.`);
|
|
9
|
+
return value;
|
|
10
|
+
}
|
|
11
|
+
const [sourceId, file] = process.argv.slice(2);
|
|
12
|
+
if (!sourceId || !file) throw new Error("Usage: submit.ts SOURCE_ID example.json");
|
|
13
|
+
const client = new OpenPondLearningClient({ apiKey: required("OPENPOND_API_KEY"), baseUrl: required("OPENPOND_API_URL"), scope: required("OPENPOND_LEARNING_SCOPE") });
|
|
14
|
+
const source = await client.get("source", sourceId);
|
|
15
|
+
const record: unknown = JSON.parse(await readFile(file, "utf8"));
|
|
16
|
+
if (!record || typeof record !== "object" || Array.isArray(record)) throw new Error("Expected one JSON object.");
|
|
17
|
+
const example = TaskExampleSubmissionSchema.parse({ ...record, schemaVersion: "openpond.taskExample.v1", sourceId, taskDefinition: source.taskDefinition });
|
|
18
|
+
const receipt = await client.submitExample(example);
|
|
19
|
+
const evidence = TaskEvidenceSchema.parse(receipt.resources[0]);
|
|
20
|
+
console.log(JSON.stringify({ operationId: receipt.operationId, evidenceId: evidence.id, revision: evidence.revision, contentHash: evidence.contentHash }));
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"required": true
|
|
69
69
|
}
|
|
70
70
|
],
|
|
71
|
+
"placementObjective": "balanced",
|
|
71
72
|
"budget": {
|
|
72
73
|
"maximumSpendUsd": 1,
|
|
73
74
|
"maximumWallSeconds": 900
|
|
@@ -80,5 +81,5 @@
|
|
|
80
81
|
"retentionDays": 7,
|
|
81
82
|
"region": null
|
|
82
83
|
},
|
|
83
|
-
"contentHash": "
|
|
84
|
+
"contentHash": "339e6f2a48e275b0558c81c7bb71489a3e94a0a2e09de6b04e44046745cce8ee"
|
|
84
85
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openpond-sdk",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "Server-side TypeScript SDK for OpenPond sandboxes and agentic work",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -11,9 +11,15 @@
|
|
|
11
11
|
"fixtures",
|
|
12
12
|
"README.md",
|
|
13
13
|
"TRAINING_PROTOCOL.md",
|
|
14
|
-
"LICENSE"
|
|
14
|
+
"LICENSE",
|
|
15
|
+
"examples",
|
|
16
|
+
"LEARNING.md"
|
|
15
17
|
],
|
|
16
18
|
"exports": {
|
|
19
|
+
"./learning": {
|
|
20
|
+
"types": "./dist/types/packages/sdk/src/learning.d.ts",
|
|
21
|
+
"import": "./dist/learning.js"
|
|
22
|
+
},
|
|
17
23
|
".": {
|
|
18
24
|
"types": "./dist/types/packages/sdk/src/index.d.ts",
|
|
19
25
|
"import": "./dist/index.js"
|
|
@@ -74,12 +80,12 @@
|
|
|
74
80
|
"@openpond/harness"
|
|
75
81
|
],
|
|
76
82
|
"scripts": {
|
|
77
|
-
"prebuild": "pnpm --dir ../cloud run build && pnpm --dir ../harness run build",
|
|
83
|
+
"prebuild": "pnpm --dir ../cloud run build && pnpm --dir ../harness run build && pnpm --dir ../evals run build",
|
|
78
84
|
"build": "tsx scripts/build.ts",
|
|
79
85
|
"typecheck": "tsc --noEmit --project tsconfig.json",
|
|
80
86
|
"test": "vitest run --root ../.. --config vitest.config.ts --project sdk",
|
|
81
|
-
"check": "pnpm run typecheck && pnpm run test && tsx scripts/check-protocol-fixtures.ts &&
|
|
82
|
-
"publish:check": "tsx scripts/check-protocol-fixtures.ts &&
|
|
87
|
+
"check": "pnpm run build && pnpm run typecheck && pnpm run test && tsx scripts/check-protocol-fixtures.ts && tsx scripts/check-published-consumer.ts --local-evals && npm pack --dry-run",
|
|
88
|
+
"publish:check": "pnpm run build && tsx scripts/check-protocol-fixtures.ts && tsx scripts/check-published-consumer.ts && npm pack --dry-run"
|
|
83
89
|
},
|
|
84
90
|
"devDependencies": {
|
|
85
91
|
"@openpond/actions": "workspace:*",
|
|
@@ -91,6 +97,7 @@
|
|
|
91
97
|
"vitest": "4.1.10"
|
|
92
98
|
},
|
|
93
99
|
"dependencies": {
|
|
100
|
+
"@openpond/evals": "^0.7.0",
|
|
94
101
|
"@openpond/harness": "^0.2.5",
|
|
95
102
|
"esbuild": "0.28.1",
|
|
96
103
|
"zod": "^4.1.13"
|