@rpamis/comet 0.4.0-beta.10 → 0.4.0-beta.11

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 (57) hide show
  1. package/assets/manifest.json +1 -1
  2. package/assets/skills/comet/reference/classic-layout.md +1 -1
  3. package/assets/skills/comet/scripts/comet-entry-runtime.mjs +1 -1
  4. package/assets/skills/comet/scripts/comet-hook-router.mjs +179 -879
  5. package/assets/skills/comet/scripts/comet-runtime.mjs +3 -3
  6. package/assets/skills/comet-native/SKILL.md +1 -2
  7. package/assets/skills/comet-native/reference/commands.md +2 -4
  8. package/assets/skills/comet-native/scripts/comet-native-runtime.mjs +4482 -4785
  9. package/assets/skills-zh/comet/reference/classic-layout.md +1 -1
  10. package/assets/skills-zh/comet-native/SKILL.md +1 -2
  11. package/assets/skills-zh/comet-native/reference/commands.md +2 -4
  12. package/dist/app/commands/update.d.ts.map +1 -1
  13. package/dist/app/commands/update.js +14 -2
  14. package/dist/app/commands/update.js.map +1 -1
  15. package/dist/domains/comet-classic/classic-layout-initialization.js +3 -3
  16. package/dist/domains/comet-classic/classic-layout-initialization.js.map +1 -1
  17. package/dist/domains/comet-entry/init-workflow.d.ts.map +1 -1
  18. package/dist/domains/comet-entry/init-workflow.js +17 -3
  19. package/dist/domains/comet-entry/init-workflow.js.map +1 -1
  20. package/dist/domains/comet-native/native-change.d.ts +0 -2
  21. package/dist/domains/comet-native/native-change.d.ts.map +1 -1
  22. package/dist/domains/comet-native/native-change.js +8 -104
  23. package/dist/domains/comet-native/native-change.js.map +1 -1
  24. package/dist/domains/comet-native/native-cli.d.ts.map +1 -1
  25. package/dist/domains/comet-native/native-cli.js +3 -47
  26. package/dist/domains/comet-native/native-cli.js.map +1 -1
  27. package/dist/domains/comet-native/native-controller-trust.d.ts +0 -1
  28. package/dist/domains/comet-native/native-controller-trust.d.ts.map +1 -1
  29. package/dist/domains/comet-native/native-controller-trust.js +2 -15
  30. package/dist/domains/comet-native/native-controller-trust.js.map +1 -1
  31. package/dist/domains/comet-native/native-review-trust.d.ts +1 -1
  32. package/dist/domains/comet-native/native-review-trust.d.ts.map +1 -1
  33. package/dist/domains/comet-native/native-review-trust.js +1 -1
  34. package/dist/domains/comet-native/native-review-trust.js.map +1 -1
  35. package/dist/domains/comet-native/native-snapshot.d.ts.map +1 -1
  36. package/dist/domains/comet-native/native-snapshot.js +0 -37
  37. package/dist/domains/comet-native/native-snapshot.js.map +1 -1
  38. package/dist/domains/comet-native/native-types.d.ts +1 -10
  39. package/dist/domains/comet-native/native-types.d.ts.map +1 -1
  40. package/dist/domains/comet-native/native-verification-runtime.d.ts.map +1 -1
  41. package/dist/domains/comet-native/native-verification-runtime.js +3 -3
  42. package/dist/domains/comet-native/native-verification-runtime.js.map +1 -1
  43. package/dist/domains/skill/platform-install.d.ts.map +1 -1
  44. package/dist/domains/skill/platform-install.js +22 -2
  45. package/dist/domains/skill/platform-install.js.map +1 -1
  46. package/dist/domains/workflow-contract/project-config.d.ts.map +1 -1
  47. package/dist/domains/workflow-contract/project-config.js +4 -4
  48. package/dist/domains/workflow-contract/project-config.js.map +1 -1
  49. package/eval/local/tasks/comet-native-workflow/instruction.md +4 -5
  50. package/eval/local/tasks/comet-native-workflow/validation/test_native_workflow.py +2 -2
  51. package/eval/local/tests/conftest.py +1 -26
  52. package/eval/local/tests/scaffold/test_native_wave_evaluations.py +2 -17
  53. package/package.json +1 -1
  54. package/dist/domains/comet-native/native-creation-authorization.d.ts +0 -30
  55. package/dist/domains/comet-native/native-creation-authorization.d.ts.map +0 -1
  56. package/dist/domains/comet-native/native-creation-authorization.js +0 -110
  57. package/dist/domains/comet-native/native-creation-authorization.js.map +0 -1
@@ -310,7 +310,7 @@ def _validate_v2_verification(archived: Path, state: dict, evidence_ref: str):
310
310
  raise ValueError("Verification evidence file is missing or unsafe")
311
311
  evidence = json.loads(evidence_file.read_text(encoding="utf-8"))
312
312
  if (
313
- state.get("verification_protocol") != "signed-v2"
313
+ state.get("verification_protocol") != "legacy-v1"
314
314
  or evidence.get("schema") != "comet.native.verification-evidence.v2"
315
315
  or evidence.get("envelopeHash") != evidence_match.group(1)
316
316
  or _content_hash(
@@ -319,7 +319,7 @@ def _validate_v2_verification(archived: Path, state: dict, evidence_ref: str):
319
319
  != evidence.get("envelopeHash")
320
320
  or evidence.get("result") != "pass"
321
321
  ):
322
- raise ValueError("Archive does not contain passing signed-v2 verification evidence")
322
+ raise ValueError("Archive does not contain passing v2 verification evidence")
323
323
 
324
324
  trace = evidence.get("acceptanceTrace")
325
325
  entries = trace.get("entries") if isinstance(trace, dict) else None
@@ -490,7 +490,7 @@ def _copy_trusted_native_review_fixture(
490
490
  environment_dir: Path,
491
491
  test_dir: Path,
492
492
  ) -> None:
493
- """Provision controller-owned signed-v2 trust without exposing a controller private key."""
493
+ """Provision external review trust without exposing private keys."""
494
494
  marker = environment_dir / TRUSTED_NATIVE_REVIEW_FIXTURE_MARKER
495
495
  if not marker.is_file():
496
496
  return
@@ -563,35 +563,15 @@ const policy={
563
563
  controllerSignature:proof(controller,policyHash)
564
564
  };
565
565
  const projectRootHash=hash('comet.native.controller-project-root.v1','/workspace');
566
- const authorizationContent={
567
- schema:'comet.native.creation-authorization.v1',
568
- controllerKeyId:controller.identity.keyId,
569
- projectRootHash,
570
- policyHash,
571
- protocol:'signed-v2',
572
- change,
573
- issuedAt:'2026-07-28T00:00:00.000Z'
574
- };
575
- const authorizationHash=hash(
576
- 'comet.native.creation-authorization.v1',
577
- authorizationContent
578
- );
579
- const authorization={
580
- ...authorizationContent,
581
- authorizationHash,
582
- controllerSignature:proof(controller,authorizationHash)
583
- };
584
566
  const store={
585
567
  schema:'comet.native.controller-trust-store.v1',
586
568
  projects:[{
587
569
  projectRootHash,
588
570
  controllerIdentity:controller.identity,
589
- legacyChanges:[]
590
571
  }]
591
572
  };
592
573
  process.stdout.write(JSON.stringify({
593
574
  policy,
594
- authorization,
595
575
  store,
596
576
  identities:{
597
577
  implementation:implementation.identity,
@@ -625,10 +605,6 @@ process.stdout.write(JSON.stringify({
625
605
  project_policy = test_dir / ".comet" / "native-review-trust.json"
626
606
  project_policy.parent.mkdir(parents=True, exist_ok=True)
627
607
  shutil.copyfile(policy_file, project_policy)
628
- authorization_name = f"{change}-creation-authorization.json"
629
- (oracle_root / authorization_name).write_text(
630
- json.dumps(fixture["authorization"], indent=2) + "\n", encoding="utf-8"
631
- )
632
608
  for role, identity in fixture["identities"].items():
633
609
  (oracle_root / f"{role}-identity.json").write_text(
634
610
  json.dumps(identity, indent=2) + "\n", encoding="utf-8"
@@ -688,7 +664,6 @@ process.stdout.write(result.stdout??'');
688
664
  "schema": TRUSTED_NATIVE_REVIEW_FIXTURE_SCHEMA,
689
665
  "change": change,
690
666
  "policyHash": fixture["policy"]["policyHash"],
691
- "creationAuthorization": f"/workspace/_eval_trusted_oracles/{authorization_name}",
692
667
  "signer": "/workspace/_eval_trusted_oracles/native-review-signer.mjs",
693
668
  "signerMode": "external-verifier-sidecar",
694
669
  "roles": ["implementation", "reviewer", "waiver"],
@@ -597,11 +597,6 @@ def test_controller_provisions_immutable_native_review_fixture(tmp_path: Path):
597
597
  (oracle / "native-review-fixture.json").read_text(encoding="utf-8")
598
598
  )
599
599
  policy = json.loads((oracle / "native-review-trust.json").read_text(encoding="utf-8"))
600
- authorization = json.loads(
601
- (oracle / "sentence-counting-creation-authorization.json").read_text(
602
- encoding="utf-8"
603
- )
604
- )
605
600
  store = json.loads(
606
601
  (oracle / "controller-home/native-controller-trust.json").read_text(
607
602
  encoding="utf-8"
@@ -611,16 +606,13 @@ def test_controller_provisions_immutable_native_review_fixture(tmp_path: Path):
611
606
  assert public_fixture["change"] == "sentence-counting"
612
607
  assert public_fixture["signerMode"] == "external-verifier-sidecar"
613
608
  assert policy["schema"] == "comet.native.review-trust-policy.v2"
614
- assert authorization["schema"] == "comet.native.creation-authorization.v1"
615
- assert authorization["policyHash"] == policy["policyHash"]
616
- assert authorization["projectRootHash"] == canonical_hash(
609
+ project_root_hash = canonical_hash(
617
610
  "comet.native.controller-project-root.v1", "/workspace"
618
611
  )
619
612
  assert store["projects"] == [
620
613
  {
621
- "projectRootHash": authorization["projectRootHash"],
614
+ "projectRootHash": project_root_hash,
622
615
  "controllerIdentity": store["projects"][0]["controllerIdentity"],
623
- "legacyChanges": [],
624
616
  }
625
617
  ]
626
618
  assert (workspace / ".comet/native-review-trust.json").read_bytes() == (
@@ -633,13 +625,6 @@ def test_controller_provisions_immutable_native_review_fixture(tmp_path: Path):
633
625
  policy["policyHash"],
634
626
  "Controller policy",
635
627
  )
636
- validator._validate_signature(
637
- authorization["controllerSignature"],
638
- store["projects"][0]["controllerIdentity"],
639
- authorization["authorizationHash"],
640
- "Controller authorization",
641
- )
642
-
643
628
  secrets_root = workspace.with_name(f".{workspace.name}-native-review-secrets")
644
629
  secret_documents = [
645
630
  json.loads((secrets_root / f"{role}-key.json").read_text(encoding="utf-8"))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rpamis/comet",
3
- "version": "0.4.0-beta.10",
3
+ "version": "0.4.0-beta.11",
4
4
  "description": "Agent Skill Harness For Turning Ideas Into Evaluated Workflows",
5
5
  "keywords": [
6
6
  "comet",
@@ -1,30 +0,0 @@
1
- import { type NativeReviewIdentity, type NativeReviewSignature } from './native-review-identity.js';
2
- import type { NativeProjectPaths } from './native-types.js';
3
- export declare const NATIVE_CREATION_AUTHORIZATION_SCHEMA: "comet.native.creation-authorization.v1";
4
- export interface NativeCreationAuthorization {
5
- schema: typeof NATIVE_CREATION_AUTHORIZATION_SCHEMA;
6
- controllerKeyId: string;
7
- projectRootHash: string;
8
- policyHash: string;
9
- protocol: 'signed-v2';
10
- change: string;
11
- issuedAt: string;
12
- authorizationHash: string;
13
- controllerSignature: NativeReviewSignature;
14
- }
15
- export declare function buildNativeCreationAuthorization(input: {
16
- controllerIdentity: NativeReviewIdentity;
17
- controllerPrivateKey: string;
18
- projectRootHash: string;
19
- policyHash: string;
20
- change: string;
21
- now?: Date;
22
- }): NativeCreationAuthorization;
23
- export declare function parseNativeCreationAuthorization(value: unknown): NativeCreationAuthorization;
24
- export declare function verifyNativeCreationAuthorization(options: {
25
- paths: NativeProjectPaths;
26
- policyHash: string;
27
- authorization: unknown;
28
- change: string;
29
- }): Promise<NativeCreationAuthorization>;
30
- //# sourceMappingURL=native-creation-authorization.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"native-creation-authorization.d.ts","sourceRoot":"","sources":["../../../domains/comet-native/native-creation-authorization.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,eAAO,MAAM,oCAAoC,EAC/C,wCAAiD,CAAC;AAIpD,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,OAAO,oCAAoC,CAAC;IACpD,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,WAAW,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,qBAAqB,CAAC;CAC5C;AAqBD,wBAAgB,gCAAgC,CAAC,KAAK,EAAE;IACtD,kBAAkB,EAAE,oBAAoB,CAAC;IACzC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ,GAAG,2BAA2B,CAoB9B;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,2BAA2B,CAwD5F;AAED,wBAAsB,iCAAiC,CAAC,OAAO,EAAE;IAC/D,KAAK,EAAE,kBAAkB,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAqBvC"}
@@ -1,110 +0,0 @@
1
- import { canonicalHash } from './native-canonical-hash.js';
2
- import { nativeControllerProjectRootHash, readNativeControllerTrustProject, } from './native-controller-trust.js';
3
- import { parseNativeReviewSignature, signNativeReviewPayloadHash, verifyNativeReviewPayloadHash, } from './native-review-identity.js';
4
- export const NATIVE_CREATION_AUTHORIZATION_SCHEMA = 'comet.native.creation-authorization.v1';
5
- const HASH_PATTERN = /^[a-f0-9]{64}$/u;
6
- const CHANGE_NAME_PATTERN = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/u;
7
- function record(value, label) {
8
- if (!value || typeof value !== 'object' || Array.isArray(value)) {
9
- throw new Error(`${label} must be an object`);
10
- }
11
- return value;
12
- }
13
- function exactKeys(value, expected, label) {
14
- const actual = Object.keys(value).sort();
15
- const canonical = [...expected].sort();
16
- if (JSON.stringify(actual) !== JSON.stringify(canonical)) {
17
- throw new Error(`${label} fields are invalid`);
18
- }
19
- }
20
- export function buildNativeCreationAuthorization(input) {
21
- const content = {
22
- schema: NATIVE_CREATION_AUTHORIZATION_SCHEMA,
23
- controllerKeyId: input.controllerIdentity.keyId,
24
- projectRootHash: input.projectRootHash,
25
- policyHash: input.policyHash,
26
- protocol: 'signed-v2',
27
- change: input.change,
28
- issuedAt: (input.now ?? new Date()).toISOString(),
29
- };
30
- const authorizationHash = canonicalHash(NATIVE_CREATION_AUTHORIZATION_SCHEMA, content);
31
- return parseNativeCreationAuthorization({
32
- ...content,
33
- authorizationHash,
34
- controllerSignature: signNativeReviewPayloadHash({
35
- identity: input.controllerIdentity,
36
- privateKey: input.controllerPrivateKey,
37
- payloadHash: authorizationHash,
38
- }),
39
- });
40
- }
41
- export function parseNativeCreationAuthorization(value) {
42
- const root = record(value, 'Native creation authorization');
43
- exactKeys(root, [
44
- 'schema',
45
- 'controllerKeyId',
46
- 'projectRootHash',
47
- 'policyHash',
48
- 'protocol',
49
- 'change',
50
- 'issuedAt',
51
- 'authorizationHash',
52
- 'controllerSignature',
53
- ], 'Native creation authorization');
54
- if (root.schema !== NATIVE_CREATION_AUTHORIZATION_SCHEMA ||
55
- typeof root.controllerKeyId !== 'string' ||
56
- !HASH_PATTERN.test(root.controllerKeyId) ||
57
- typeof root.projectRootHash !== 'string' ||
58
- !HASH_PATTERN.test(root.projectRootHash) ||
59
- typeof root.policyHash !== 'string' ||
60
- !HASH_PATTERN.test(root.policyHash) ||
61
- root.protocol !== 'signed-v2' ||
62
- typeof root.change !== 'string' ||
63
- !CHANGE_NAME_PATTERN.test(root.change) ||
64
- typeof root.issuedAt !== 'string' ||
65
- Number.isNaN(Date.parse(root.issuedAt)) ||
66
- typeof root.authorizationHash !== 'string' ||
67
- !HASH_PATTERN.test(root.authorizationHash)) {
68
- throw new Error('Native creation authorization is invalid');
69
- }
70
- const content = {
71
- schema: NATIVE_CREATION_AUTHORIZATION_SCHEMA,
72
- controllerKeyId: root.controllerKeyId,
73
- projectRootHash: root.projectRootHash,
74
- policyHash: root.policyHash,
75
- protocol: 'signed-v2',
76
- change: root.change,
77
- issuedAt: root.issuedAt,
78
- };
79
- const authorizationHash = canonicalHash(NATIVE_CREATION_AUTHORIZATION_SCHEMA, content);
80
- if (authorizationHash !== root.authorizationHash) {
81
- throw new Error('Native creation authorization hash mismatch');
82
- }
83
- const controllerSignature = parseNativeReviewSignature(root.controllerSignature);
84
- if (controllerSignature.keyId !== root.controllerKeyId ||
85
- controllerSignature.payloadHash !== authorizationHash) {
86
- throw new Error('Native creation authorization signature binding is invalid');
87
- }
88
- return { ...content, authorizationHash, controllerSignature };
89
- }
90
- export async function verifyNativeCreationAuthorization(options) {
91
- const controllerTrust = await readNativeControllerTrustProject(options.paths.projectRoot);
92
- if (!controllerTrust) {
93
- throw new Error('Native project has no controller-owned trust root');
94
- }
95
- const authorization = parseNativeCreationAuthorization(options.authorization);
96
- const projectRootHash = await nativeControllerProjectRootHash(options.paths.projectRoot);
97
- if (authorization.controllerKeyId !== controllerTrust.controllerIdentity.keyId ||
98
- authorization.projectRootHash !== projectRootHash ||
99
- authorization.policyHash !== options.policyHash ||
100
- authorization.change !== options.change) {
101
- throw new Error('Native creation authorization does not match the trusted project/change');
102
- }
103
- verifyNativeReviewPayloadHash({
104
- identity: controllerTrust.controllerIdentity,
105
- payloadHash: authorization.authorizationHash,
106
- proof: authorization.controllerSignature,
107
- });
108
- return authorization;
109
- }
110
- //# sourceMappingURL=native-creation-authorization.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"native-creation-authorization.js","sourceRoot":"","sources":["../../../domains/comet-native/native-creation-authorization.ts"],"names":[],"mappings":"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"}