@skill-harness/core 0.11.0 → 0.12.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.
Files changed (77) hide show
  1. package/README.md +2 -1
  2. package/dist/adapters/types.d.ts +19 -0
  3. package/dist/adjudication.d.ts +9 -1
  4. package/dist/adjudication.js +41 -33
  5. package/dist/arms.d.ts +1 -1
  6. package/dist/capture-trace-types.d.ts +2 -0
  7. package/dist/command-cost.d.ts +9 -0
  8. package/dist/command-cost.js +23 -0
  9. package/dist/comparison.d.ts +1 -0
  10. package/dist/comparison.js +9 -3
  11. package/dist/execution-trace.js +9 -1
  12. package/dist/grade.d.ts +2 -0
  13. package/dist/grade.js +2 -1
  14. package/dist/index.d.ts +12 -0
  15. package/dist/index.js +12 -0
  16. package/dist/journal.d.ts +1 -1
  17. package/dist/judge-agreement.d.ts +19 -0
  18. package/dist/judge-agreement.js +31 -0
  19. package/dist/judge-policy.js +5 -3
  20. package/dist/lift.js +1 -1
  21. package/dist/lint.js +1 -1
  22. package/dist/prompt-normalization.d.ts +6 -0
  23. package/dist/prompt-normalization.js +14 -0
  24. package/dist/qualification-capture.d.ts +44 -0
  25. package/dist/qualification-capture.js +163 -0
  26. package/dist/qualification-config.d.ts +233 -0
  27. package/dist/qualification-config.js +694 -0
  28. package/dist/qualification-lock.d.ts +15 -0
  29. package/dist/qualification-lock.js +87 -0
  30. package/dist/qualification-oauth-directory.d.ts +79 -0
  31. package/dist/qualification-oauth-directory.js +444 -0
  32. package/dist/qualification-panel-store.d.ts +14 -0
  33. package/dist/qualification-panel-store.js +188 -0
  34. package/dist/qualification-panels.d.ts +99 -0
  35. package/dist/qualification-panels.js +91 -0
  36. package/dist/qualification-process.d.ts +13 -0
  37. package/dist/qualification-process.js +188 -0
  38. package/dist/qualification-runner.d.ts +203 -0
  39. package/dist/qualification-runner.js +2037 -0
  40. package/dist/qualification-store.d.ts +187 -0
  41. package/dist/qualification-store.js +833 -0
  42. package/dist/qualification-validation.d.ts +12 -0
  43. package/dist/qualification-validation.js +8 -0
  44. package/dist/regate.js +42 -10
  45. package/dist/regrade.d.ts +3 -1
  46. package/dist/regrade.js +37 -5
  47. package/dist/reps.d.ts +4 -2
  48. package/dist/reps.js +13 -4
  49. package/dist/rescore.js +2 -1
  50. package/dist/results.d.ts +53 -7
  51. package/dist/results.js +210 -7
  52. package/dist/run.js +66 -17
  53. package/dist/score.d.ts +4 -3
  54. package/dist/score.js +13 -4
  55. package/dist/screen.d.ts +31 -0
  56. package/dist/screen.js +105 -0
  57. package/dist/seeded.d.ts +2 -1
  58. package/dist/seeded.js +1 -0
  59. package/dist/sources.d.ts +7 -1
  60. package/dist/sources.js +13 -5
  61. package/dist/spec.d.ts +1 -1
  62. package/dist/spec.js +1 -1
  63. package/dist/stability.js +1 -1
  64. package/dist/trajectory-gates.d.ts +14 -2
  65. package/dist/trajectory-gates.js +26 -6
  66. package/dist/vote-panel.d.ts +33 -0
  67. package/dist/vote-panel.js +41 -0
  68. package/dist/workspace.js +4 -1
  69. package/package.json +3 -3
  70. package/schemas/qualification-cell-result-v1.schema.json +32 -0
  71. package/schemas/qualification-config-v1.schema.json +244 -0
  72. package/schemas/qualification-invocation-request-v1.schema.json +59 -0
  73. package/schemas/qualification-judge-panel-result-v1.schema.json +42 -0
  74. package/schemas/results-v2.schema.json +19 -21
  75. package/schemas/results-v3.schema.json +654 -0
  76. package/schemas/specification-v1.schema.json +1 -1
  77. package/schemas/trajectory-event-v1.schema.json +20 -1
@@ -0,0 +1,203 @@
1
+ import type { QualificationJudgePanelMember } from "./qualification-panels.js";
2
+ import { type QualificationOutputReceipt } from "./qualification-capture.js";
3
+ export { redactQualificationOutput } from "./qualification-capture.js";
4
+ export type { QualificationOutputReceipt } from "./qualification-capture.js";
5
+ import { type QualificationProcessIdentity } from "./qualification-process.js";
6
+ export { qualificationProcessIdentity, qualificationProcessMatches } from "./qualification-process.js";
7
+ export type { QualificationProcessIdentity } from "./qualification-process.js";
8
+ import { QUALIFICATION_OAUTH_DIRECTORY_POLICY_V2, QUALIFICATION_TERMINAL_RECEIPT_VERSION_V3 } from "./qualification-config.js";
9
+ import { type QualificationOAuthDirectoryInventoryV2 } from "./qualification-oauth-directory.js";
10
+ import { validateQualificationSpool, type QualificationInvocationInputBindingV1, type QualificationLifecycleV1, type QualificationTerminalStatus } from "./qualification-store.js";
11
+ export declare const QUALIFICATION_AUTH_EVIDENCE_VERSION: "qualification-auth-evidence-v1";
12
+ export declare const QUALIFICATION_AUTH_EVIDENCE_VERSION_V2: "qualification-auth-evidence-v2";
13
+ export declare const QUALIFICATION_TERMINAL_RECEIPT_VERSION: "qualification-terminal-receipt-v1";
14
+ export declare const QUALIFICATION_TERMINAL_RECEIPT_VERSION_V2: "qualification-terminal-receipt-v2";
15
+ export declare const QUALIFICATION_LAUNCH_ATTEMPT_VERSION: "qualification-launch-attempt-v1";
16
+ export declare const QUALIFICATION_LAUNCH_ATTEMPT_VERSION_V2: "qualification-launch-attempt-v2";
17
+ export declare const QUALIFICATION_INPUT_LAUNCH_CLAIM_VERSION: "qualification-input-launch-claim-v1";
18
+ export interface QualificationFilesystemOccurrence {
19
+ realpath: string;
20
+ device: number;
21
+ inode: number;
22
+ mtime_ms: number;
23
+ bytes: number;
24
+ }
25
+ export interface QualificationAuthEvidenceV1 {
26
+ schema_version: typeof QUALIFICATION_AUTH_EVIDENCE_VERSION;
27
+ checked_at: string;
28
+ provider: string;
29
+ requested_model: string;
30
+ model_identity_observed: false;
31
+ status: "ready";
32
+ auth_type: "oauth";
33
+ source: "pi-auth-check-json";
34
+ credentials_included: false;
35
+ readiness_only: true;
36
+ removed_parent_environment_names: string[];
37
+ child_environment_names: string[];
38
+ executable_sha256: string;
39
+ launch_authority_sha256: string;
40
+ oauth_agent_directory_identity: QualificationFilesystemOccurrence | null;
41
+ oauth_auth_file_identity: QualificationFilesystemOccurrence | null;
42
+ oauth_models_file_identity: QualificationFilesystemOccurrence | null;
43
+ oauth_directory_entries: string[];
44
+ evidence_sha256: string;
45
+ }
46
+ export interface QualificationAuthEvidenceV2 extends Omit<QualificationAuthEvidenceV1, "schema_version" | "oauth_agent_directory_identity" | "oauth_auth_file_identity" | "oauth_models_file_identity" | "oauth_directory_entries"> {
47
+ schema_version: typeof QUALIFICATION_AUTH_EVIDENCE_VERSION_V2;
48
+ oauth_directory_policy: typeof QUALIFICATION_OAUTH_DIRECTORY_POLICY_V2;
49
+ oauth_directory_validations: {
50
+ before_oauth_readiness: QualificationOAuthDirectoryInventoryV2;
51
+ after_oauth_readiness: QualificationOAuthDirectoryInventoryV2;
52
+ };
53
+ }
54
+ export type QualificationAuthEvidence = QualificationAuthEvidenceV1 | QualificationAuthEvidenceV2;
55
+ export interface QualificationOAuthDirectoryValidationsV2 {
56
+ before_oauth_readiness: QualificationOAuthDirectoryInventoryV2 | null;
57
+ after_oauth_readiness: QualificationOAuthDirectoryInventoryV2 | null;
58
+ before_launch_claim: QualificationOAuthDirectoryInventoryV2 | null;
59
+ immediately_before_pi_launch: QualificationOAuthDirectoryInventoryV2 | null;
60
+ after_child_termination: QualificationOAuthDirectoryInventoryV2 | null;
61
+ }
62
+ export interface QualificationTerminalReceiptV1 {
63
+ schema_version: typeof QUALIFICATION_TERMINAL_RECEIPT_VERSION;
64
+ invocation_id: string;
65
+ terminal_status: QualificationTerminalStatus;
66
+ attempt: 0 | 1;
67
+ started_at: string | null;
68
+ finished_at: string;
69
+ deadline_at: string | null;
70
+ requested_timeout_ms: number;
71
+ effective_timeout_ms: number;
72
+ supervisor: QualificationProcessIdentity;
73
+ child: QualificationProcessIdentity | null;
74
+ exit_code: number | null;
75
+ signal: NodeJS.Signals | null;
76
+ requested: {
77
+ provider: string;
78
+ model: string;
79
+ };
80
+ actual: {
81
+ provider: string;
82
+ model: string;
83
+ } | null;
84
+ provider_model_identity_observed: boolean;
85
+ successful_execution: boolean;
86
+ fallback_detected: boolean;
87
+ authentication: {
88
+ evidence_sha256: string;
89
+ status: "ready";
90
+ auth_type: "oauth";
91
+ readiness_only: true;
92
+ } | null;
93
+ accounting_event_sha256: string | null;
94
+ continuation_authority_sha256: string | null;
95
+ stdout: QualificationOutputReceipt;
96
+ stderr: QualificationOutputReceipt;
97
+ artifact: {
98
+ path: string;
99
+ type: "pi-jsonl";
100
+ bytes: number;
101
+ sha256: string;
102
+ } | null;
103
+ error: string | null;
104
+ }
105
+ export interface QualificationTerminalReceiptV2 extends Omit<QualificationTerminalReceiptV1, "schema_version"> {
106
+ schema_version: typeof QUALIFICATION_TERMINAL_RECEIPT_VERSION_V2;
107
+ oauth_directory_policy: typeof QUALIFICATION_OAUTH_DIRECTORY_POLICY_V2;
108
+ oauth_directory_validations: QualificationOAuthDirectoryValidationsV2;
109
+ }
110
+ export interface QualificationTerminalReceiptV3 extends Omit<QualificationTerminalReceiptV2, "schema_version"> {
111
+ schema_version: typeof QUALIFICATION_TERMINAL_RECEIPT_VERSION_V3;
112
+ configuration_sha256: string;
113
+ invocation_sha256: string;
114
+ invocation_input: QualificationInvocationInputBindingV1;
115
+ input_launch_claim_sha256: string | null;
116
+ launch_attempt_sha256: string | null;
117
+ child_occurrence_sha256: string | null;
118
+ }
119
+ export type QualificationTerminalReceipt = QualificationTerminalReceiptV1 | QualificationTerminalReceiptV2 | QualificationTerminalReceiptV3;
120
+ export interface QualificationInvocationStatus {
121
+ invocation_id: string;
122
+ phase: QualificationLifecycleV1["phase"];
123
+ terminal_status: QualificationTerminalStatus | null;
124
+ attempt: 0 | 1;
125
+ requested: {
126
+ provider: string;
127
+ model: string;
128
+ };
129
+ actual: {
130
+ provider: string;
131
+ model: string;
132
+ } | null;
133
+ deadline_at: string | null;
134
+ effective_timeout_ms: number | null;
135
+ output: {
136
+ stdout: QualificationOutputReceipt;
137
+ stderr: QualificationOutputReceipt;
138
+ } | null;
139
+ supervisor: QualificationProcessIdentity | null;
140
+ child: QualificationProcessIdentity | null;
141
+ supervisor_alive: boolean | null;
142
+ child_alive: boolean | null;
143
+ }
144
+ /**
145
+ * Verify that the Pi agent directory exposed to a production child contains an
146
+ * OAuth credential for openai-codex, no stored API-key credentials, and no
147
+ * models.json override capable of redirecting that provider. No credential
148
+ * value or digest leaves this function.
149
+ */
150
+ export declare function assertQualificationOAuthCredentialBoundary(env: NodeJS.ProcessEnv): {
151
+ agent_directory: string;
152
+ provider: "openai-codex";
153
+ auth_type: "oauth";
154
+ agent_directory_identity: QualificationFilesystemOccurrence;
155
+ auth_file_identity: QualificationFilesystemOccurrence;
156
+ models_file_identity: QualificationFilesystemOccurrence | null;
157
+ directory_entries: string[];
158
+ };
159
+ export declare function checkQualificationAuthentication(options: {
160
+ spool_dir: string;
161
+ invocation_id: string;
162
+ parent_env?: NodeJS.ProcessEnv;
163
+ now?: () => string;
164
+ }): Promise<{
165
+ evidence: QualificationAuthEvidence;
166
+ child_env: NodeJS.ProcessEnv;
167
+ launch_authority: string;
168
+ }>;
169
+ /**
170
+ * Execute one previously prepared invocation. There is deliberately no retry
171
+ * parameter and exactly one model-process spawn site in this function.
172
+ */
173
+ export declare function superviseQualificationInvocation(options: {
174
+ spool_dir: string;
175
+ invocation_id: string;
176
+ child_env: NodeJS.ProcessEnv;
177
+ authentication_authority?: string;
178
+ continuation_authority?: string;
179
+ now?: () => string;
180
+ /** Deterministic race injection for offline tests only; production rejects it. */
181
+ test_hooks?: {
182
+ immediately_before_child_input_validation?: () => void;
183
+ };
184
+ }): Promise<void>;
185
+ export declare function readValidatedQualificationTerminalReceipt(spoolDir: string, invocationId: string): QualificationTerminalReceipt;
186
+ /** Convert one fully validated judge invocation into the shared panel vote shape. */
187
+ export declare function readQualificationJudgePanelMember(spoolDir: string, invocationId: string): QualificationJudgePanelMember;
188
+ export declare function qualificationInvocationStatus(spoolDir: string, invocationId: string): QualificationInvocationStatus;
189
+ export declare function pollQualificationInvocation(options: {
190
+ spool_dir: string;
191
+ invocation_id: string;
192
+ wait_ms?: number;
193
+ interval_ms?: number;
194
+ }): Promise<QualificationInvocationStatus>;
195
+ export declare function abortQualificationInvocation(options: {
196
+ spool_dir: string;
197
+ invocation_id: string;
198
+ reason: string;
199
+ now?: () => string;
200
+ }): Promise<QualificationInvocationStatus>;
201
+ export declare function validateQualificationBaseSpool(spoolDir: string): ReturnType<typeof validateQualificationSpool> & {
202
+ terminal: number;
203
+ };