@mplp/sdk-ts 1.0.5 → 1.0.7

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 (44) hide show
  1. package/CHANGELOG.md +1 -5
  2. package/LICENSE +17 -0
  3. package/LICENSE.txt +201 -201
  4. package/README.md +61 -20
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.js +1 -0
  7. package/dist/kernel-duties.d.ts +1 -0
  8. package/dist/kernel-duties.js +7 -0
  9. package/package.json +25 -9
  10. package/schemas/common/common-types.schema.json +1 -1
  11. package/schemas/common/events.schema.json +1 -1
  12. package/schemas/common/identifiers.schema.json +1 -1
  13. package/schemas/common/learning-sample.schema.json +1 -1
  14. package/schemas/common/metadata.schema.json +6 -4
  15. package/schemas/common/trace-base.schema.json +1 -1
  16. package/schemas/events/mplp-event-core.schema.json +1 -1
  17. package/schemas/events/mplp-graph-update-event.schema.json +1 -1
  18. package/schemas/events/mplp-map-event.schema.json +1 -1
  19. package/schemas/events/mplp-pipeline-stage-event.schema.json +1 -1
  20. package/schemas/events/mplp-runtime-execution-event.schema.json +1 -1
  21. package/schemas/events/mplp-sa-event.schema.json +1 -1
  22. package/schemas/integration/mplp-ci-event.schema.json +1 -1
  23. package/schemas/integration/mplp-file-update-event.schema.json +1 -1
  24. package/schemas/integration/mplp-git-event.schema.json +1 -1
  25. package/schemas/integration/mplp-tool-event.schema.json +1 -1
  26. package/schemas/invariants/integration-invariants.yaml +136 -144
  27. package/schemas/invariants/learning-invariants.yaml +95 -103
  28. package/schemas/invariants/map-invariants.yaml +62 -70
  29. package/schemas/invariants/observability-invariants.yaml +95 -103
  30. package/schemas/invariants/sa-invariants.yaml +61 -69
  31. package/schemas/kernel-duties.json +18 -0
  32. package/schemas/learning/mplp-learning-sample-core.schema.json +1 -1
  33. package/schemas/learning/mplp-learning-sample-delta.schema.json +1 -1
  34. package/schemas/learning/mplp-learning-sample-intent.schema.json +1 -1
  35. package/schemas/mplp-collab.schema.json +1 -1
  36. package/schemas/mplp-confirm.schema.json +1 -1
  37. package/schemas/mplp-context.schema.json +1 -1
  38. package/schemas/mplp-core.schema.json +1 -1
  39. package/schemas/mplp-dialog.schema.json +1 -1
  40. package/schemas/mplp-extension.schema.json +1 -1
  41. package/schemas/mplp-network.schema.json +1 -1
  42. package/schemas/mplp-plan.schema.json +1 -1
  43. package/schemas/mplp-role.schema.json +1 -1
  44. package/schemas/mplp-trace.schema.json +1 -1
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@mplp/sdk-ts",
3
- "version": "1.0.5",
4
- "description": "TypeScript SDK and reference runtime for the MPLP Protocol v1.0.0 (Multi-Agent Lifecycle Protocol).",
3
+ "version": "1.0.7",
4
+ "description": "Public TypeScript SDK facade for MPLP Protocol v1.0.0; ships builders, runtime client helpers, schema mirrors, and Kernel Duty exports.",
5
5
  "license": "Apache-2.0",
6
- "author": "Coregentis AI",
6
+ "author": "Bangshi Beijing Network Technology Limited Company",
7
7
  "repository": {
8
8
  "type": "git",
9
9
  "url": "https://github.com/Coregentis/MPLP-Protocol.git"
@@ -11,14 +11,15 @@
11
11
  "bugs": {
12
12
  "url": "https://github.com/Coregentis/MPLP-Protocol/issues"
13
13
  },
14
- "homepage": "https://mplp.io",
14
+ "homepage": "https://www.mplp.io",
15
15
  "keywords": [
16
16
  "mplp",
17
17
  "multi-agent",
18
18
  "protocol",
19
19
  "ai agents",
20
20
  "lifecycle",
21
- "runtime",
21
+ "sdk",
22
+ "facade",
22
23
  "typescript",
23
24
  "agent-os",
24
25
  "agent-os-protocol"
@@ -36,13 +37,22 @@
36
37
  "protocolVersion": "1.0.0",
37
38
  "frozen": true,
38
39
  "governance": "MPGC",
39
- "layer": "Tools"
40
+ "layer": "Facade",
41
+ "packageClass": "PUBLIC",
42
+ "publishSurface": true,
43
+ "publishScope": "public-npm",
44
+ "sourcePackagePath": "packages/sources/sdk-ts",
45
+ "kernelDutyBaselineCarried": true
40
46
  },
41
47
  "scripts": {
42
48
  "build": "tsc",
43
- "test": "vitest run"
49
+ "test": "echo 'No tests yet'"
44
50
  },
45
51
  "dependencies": {
52
+ "@mplp/core": "^1.0.6",
53
+ "@mplp/coordination": "^1.0.6",
54
+ "@mplp/runtime-minimal": "^1.0.5",
55
+ "@mplp/schema": "^1.0.6",
46
56
  "ajv": "^8.12.0",
47
57
  "ajv-formats": "^2.1.1",
48
58
  "chalk": "^4.1.2",
@@ -59,10 +69,16 @@
59
69
  },
60
70
  "exports": {
61
71
  ".": {
72
+ "require": "./dist/index.js",
62
73
  "import": "./dist/index.js",
63
74
  "types": "./dist/index.d.ts"
75
+ },
76
+ "./kernel-duties": {
77
+ "require": "./dist/kernel-duties.js",
78
+ "import": "./dist/kernel-duties.js",
79
+ "types": "./dist/kernel-duties.d.ts"
64
80
  }
65
81
  },
66
82
  "sideEffects": false,
67
- "copyright": "© 2025 邦士(北京)网络科技有限公司"
68
- }
83
+ "copyright": "© 2026 Bangshi Beijing Network Technology Limited Company"
84
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "$comment": "MPLP v1.0.0 FROZEN – © 2025 邦士(北京)网络科技有限公司 – Apache-2.0 – Governance: MPGC",
2
+ "$comment": "MPLP v1.0.0 FROZEN – © 2026 Bangshi Beijing Network Technology Limited Company – Apache-2.0 – Governance: MPGC",
3
3
  "$id": "https://schemas.mplp.dev/v1.0/common/common-types.schema.json",
4
4
  "$schema": "http://json-schema.org/draft-07/schema#",
5
5
  "title": "MPLP Common Types",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$comment": "MPLP v1.0.0 FROZEN – © 2025 邦士(北京)网络科技有限公司 – Apache-2.0 – Governance: MPGC",
2
+ "$comment": "MPLP v1.0.0 FROZEN – © 2026 Bangshi Beijing Network Technology Limited Company – Apache-2.0 – Governance: MPGC",
3
3
  "$id": "https://schemas.mplp.dev/v1.0/common/events.schema.json",
4
4
  "$schema": "http://json-schema.org/draft-07/schema#",
5
5
  "title": "MPLP Base Event",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$comment": "MPLP v1.0.0 FROZEN – © 2025 邦士(北京)网络科技有限公司 – Apache-2.0 – Governance: MPGC",
2
+ "$comment": "MPLP v1.0.0 FROZEN – © 2026 Bangshi Beijing Network Technology Limited Company – Apache-2.0 – Governance: MPGC",
3
3
  "$id": "https://schemas.mplp.dev/v1.0/common/identifiers.schema.json",
4
4
  "$schema": "http://json-schema.org/draft-07/schema#",
5
5
  "title": "MPLP Identifier",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$comment": "MPLP v1.0.0 FROZEN – © 2025 邦士(北京)网络科技有限公司 – Apache-2.0 – Governance: MPGC",
2
+ "$comment": "MPLP v1.0.0 FROZEN – © 2026 Bangshi Beijing Network Technology Limited Company – Apache-2.0 – Governance: MPGC",
3
3
  "$schema": "http://json-schema.org/draft-07/schema#",
4
4
  "$id": "https://schemas.mplp.dev/v1.0/common/learning-sample.schema.json",
5
5
  "title": "MPLP Learning Sample – Schema v2.0",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$comment": "MPLP v1.0.0 FROZEN – © 2025 邦士(北京)网络科技有限公司 – Apache-2.0 – Governance: MPGC",
2
+ "$comment": "MPLP v1.0.0 FROZEN – © 2026 Bangshi Beijing Network Technology Limited Company – Apache-2.0 – Governance: MPGC",
3
3
  "$id": "https://schemas.mplp.dev/v1.0/common/metadata.schema.json",
4
4
  "$schema": "http://json-schema.org/draft-07/schema#",
5
5
  "title": "MPLP Metadata",
@@ -77,16 +77,18 @@
77
77
  },
78
78
  "cross_cutting": {
79
79
  "type": "array",
80
- "description": "Declares cross-cutting concerns enabled for the current object (one of the 9 concerns in Governance Plane).",
80
+ "description": "Declares cross-cutting concerns enabled for the current object (one of the 11 concerns in Governance Plane).",
81
81
  "items": {
82
82
  "type": "string",
83
83
  "enum": [
84
84
  "coordination",
85
85
  "error-handling",
86
86
  "event-bus",
87
+ "learning-feedback",
88
+ "observability",
87
89
  "orchestration",
88
90
  "performance",
89
- "protocol-version",
91
+ "protocol-versioning",
90
92
  "security",
91
93
  "state-sync",
92
94
  "transaction"
@@ -116,4 +118,4 @@
116
118
  "freezeDate": "2025-12-03",
117
119
  "governance": "MPGC"
118
120
  }
119
- }
121
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "$comment": "MPLP v1.0.0 FROZEN – © 2025 邦士(北京)网络科技有限公司 – Apache-2.0 – Governance: MPGC",
2
+ "$comment": "MPLP v1.0.0 FROZEN – © 2026 Bangshi Beijing Network Technology Limited Company – Apache-2.0 – Governance: MPGC",
3
3
  "$id": "https://schemas.mplp.dev/v1.0/common/trace-base.schema.json",
4
4
  "$schema": "http://json-schema.org/draft-07/schema#",
5
5
  "title": "MPLP Trace Base",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$comment": "MPLP v1.0.0 FROZEN – © 2025 邦士(北京)网络科技有限公司 – Apache-2.0 – Governance: MPGC",
2
+ "$comment": "MPLP v1.0.0 FROZEN – © 2026 Bangshi Beijing Network Technology Limited Company – Apache-2.0 – Governance: MPGC",
3
3
  "$schema": "http://json-schema.org/draft-07/schema#",
4
4
  "$id": "https://mplp.dev/schemas/v1.0/events/mplp-event-core.schema.json",
5
5
  "title": "MPLP Core Event v1.0",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$comment": "MPLP v1.0.0 FROZEN – © 2025 邦士(北京)网络科技有限公司 – Apache-2.0 – Governance: MPGC",
2
+ "$comment": "MPLP v1.0.0 FROZEN – © 2026 Bangshi Beijing Network Technology Limited Company – Apache-2.0 – Governance: MPGC",
3
3
  "$schema": "http://json-schema.org/draft-07/schema#",
4
4
  "$id": "https://mplp.dev/schemas/v1.0/events/mplp-graph-update-event.schema.json",
5
5
  "title": "MPLP GraphUpdateEvent v1.0",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$comment": "MPLP v1.0.0 FROZEN – © 2025 邦士(北京)网络科技有限公司 – Apache-2.0 – Governance: MPGC",
2
+ "$comment": "MPLP v1.0.0 FROZEN – © 2026 Bangshi Beijing Network Technology Limited Company – Apache-2.0 – Governance: MPGC",
3
3
  "$schema": "http://json-schema.org/draft-07/schema#",
4
4
  "$id": "https://mplp.dev/schemas/v1.0/events/mplp-map-event.schema.json",
5
5
  "title": "MPLP MAP Event v1.0",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$comment": "MPLP v1.0.0 FROZEN – © 2025 邦士(北京)网络科技有限公司 – Apache-2.0 – Governance: MPGC",
2
+ "$comment": "MPLP v1.0.0 FROZEN – © 2026 Bangshi Beijing Network Technology Limited Company – Apache-2.0 – Governance: MPGC",
3
3
  "$schema": "http://json-schema.org/draft-07/schema#",
4
4
  "$id": "https://mplp.dev/schemas/v1.0/events/mplp-pipeline-stage-event.schema.json",
5
5
  "title": "MPLP PipelineStageEvent v1.0",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$comment": "MPLP v1.0.0 FROZEN – © 2025 邦士(北京)网络科技有限公司 – Apache-2.0 – Governance: MPGC",
2
+ "$comment": "MPLP v1.0.0 FROZEN – © 2026 Bangshi Beijing Network Technology Limited Company – Apache-2.0 – Governance: MPGC",
3
3
  "$schema": "http://json-schema.org/draft-07/schema#",
4
4
  "$id": "https://mplp.dev/schemas/v1.0/events/mplp-runtime-execution-event.schema.json",
5
5
  "title": "MPLP RuntimeExecutionEvent v1.0",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$comment": "MPLP v1.0.0 FROZEN – © 2025 邦士(北京)网络科技有限公司 – Apache-2.0 – Governance: MPGC",
2
+ "$comment": "MPLP v1.0.0 FROZEN – © 2026 Bangshi Beijing Network Technology Limited Company – Apache-2.0 – Governance: MPGC",
3
3
  "$schema": "http://json-schema.org/draft-07/schema#",
4
4
  "$id": "https://mplp.dev/schemas/v1.0/events/mplp-sa-event.schema.json",
5
5
  "title": "MPLP SA Event v1.0",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$comment": "MPLP v1.0.0 FROZEN – © 2025 邦士(北京)网络科技有限公司 – Apache-2.0 – Governance: MPGC",
2
+ "$comment": "MPLP v1.0.0 FROZEN – © 2026 Bangshi Beijing Network Technology Limited Company – Apache-2.0 – Governance: MPGC",
3
3
  "$schema": "http://json-schema.org/draft-07/schema#",
4
4
  "$id": "https://mplp.dev/schemas/v1.0/integration/mplp-ci-event.json",
5
5
  "title": "MPLP CI Event v1.0",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$comment": "MPLP v1.0.0 FROZEN – © 2025 邦士(北京)网络科技有限公司 – Apache-2.0 – Governance: MPGC",
2
+ "$comment": "MPLP v1.0.0 FROZEN – © 2026 Bangshi Beijing Network Technology Limited Company – Apache-2.0 – Governance: MPGC",
3
3
  "$schema": "http://json-schema.org/draft-07/schema#",
4
4
  "$id": "https://mplp.dev/schemas/v1.0/integration/mplp-file-update-event.json",
5
5
  "title": "MPLP File Update Event v1.0",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$comment": "MPLP v1.0.0 FROZEN – © 2025 邦士(北京)网络科技有限公司 – Apache-2.0 – Governance: MPGC",
2
+ "$comment": "MPLP v1.0.0 FROZEN – © 2026 Bangshi Beijing Network Technology Limited Company – Apache-2.0 – Governance: MPGC",
3
3
  "$schema": "http://json-schema.org/draft-07/schema#",
4
4
  "$id": "https://mplp.dev/schemas/v1.0/integration/mplp-git-event.json",
5
5
  "title": "MPLP Git Event v1.0",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$comment": "MPLP v1.0.0 FROZEN – © 2025 邦士(北京)网络科技有限公司 – Apache-2.0 – Governance: MPGC",
2
+ "$comment": "MPLP v1.0.0 FROZEN – © 2026 Bangshi Beijing Network Technology Limited Company – Apache-2.0 – Governance: MPGC",
3
3
  "$schema": "http://json-schema.org/draft-07/schema#",
4
4
  "$id": "https://mplp.dev/schemas/v1.0/integration/mplp-tool-event.json",
5
5
  "title": "MPLP Tool Event v1.0",
@@ -1,147 +1,139 @@
1
1
  # MPLP v1.0.0 FROZEN – Invariant Set
2
- # © 2025 邦士(北京)网络科技有限公司 – Apache-2.0
2
+ # © 2026 Bangshi Beijing Network Technology Limited Company – Apache-2.0
3
3
  # Governance: MPLP Protocol Governance Committee (MPGC)
4
4
 
5
- # MPLP Protocol v1.0.0 — Frozen Specification
6
- # Freeze Date: 2025-12-03
7
- # Status: FROZEN (no breaking changes permitted)
8
- # Governance: MPLP Protocol Governance Committee (MPGC)
9
- # © 2025 邦士(北京)网络科技有限公司
10
- # License: Apache-2.0
11
- # Any normative change requires a new protocol version.
12
-
13
- # MPLP Protocol 1.0.0 — Frozen Specification
14
- # Status: Frozen as of 2025-11-30
15
- # Copyright: © 2025 邦士(北京)网络科技有限公司
16
- # License: Apache-2.0 (see LICENSE at repository root)
17
- # Any normative change requires a new protocol version.
18
-
19
- invariants:
20
- # ========================================
21
- # Tool Event Invariants
22
- # ========================================
23
- - id: integration_tool_event_id_non_empty
24
- scope: tool_event
25
- path: tool_id
26
- rule: non-empty-string
27
- description: "Tool event must have non-empty tool_id"
28
-
29
- - id: integration_tool_kind_valid
30
- scope: tool_event
31
- path: tool_kind
32
- rule: enum(formatter,linter,test_runner,generator,other)
33
- description: "Tool kind must be valid enum value"
34
-
35
- - id: integration_tool_invocation_id_uuid
36
- scope: tool_event
37
- path: invocation_id
38
- rule: uuid-v4
39
- description: "Tool invocation_id must be UUID v4"
40
-
41
- - id: integration_tool_status_valid
42
- scope: tool_event
43
- path: status
44
- rule: enum(pending,running,succeeded,failed,cancelled)
45
- description: "Tool event status must be valid enum value"
46
-
47
- - id: integration_tool_started_at_iso
48
- scope: tool_event
49
- path: started_at
50
- rule: iso-datetime
51
- description: "If started_at present, must be ISO 8601 datetime"
52
- note: "Apply only when started_at field exists"
53
-
54
- # ========================================
55
- # File Update Event Invariants
56
- # ========================================
57
- - id: integration_file_path_non_empty
58
- scope: file_update_event
59
- path: file_path
60
- rule: non-empty-string
61
- description: "File update event must have non-empty file_path"
62
-
63
- - id: integration_file_change_type_valid
64
- scope: file_update_event
65
- path: change_type
66
- rule: enum(created,modified,deleted,renamed)
67
- description: "File change_type must be valid enum value"
68
-
69
- - id: integration_file_timestamp_iso
70
- scope: file_update_event
71
- path: timestamp
72
- rule: iso-datetime
73
- description: "File update timestamp must be ISO 8601 datetime"
74
-
75
- # ========================================
76
- # Git Event Invariants
77
- # ========================================
78
- - id: integration_git_repo_url_non_empty
79
- scope: git_event
80
- path: repo_url
81
- rule: non-empty-string
82
- description: "Git event must have non-empty repo_url"
83
-
84
- - id: integration_git_commit_id_non_empty
85
- scope: git_event
86
- path: commit_id
87
- rule: non-empty-string
88
- description: "Git event must have non-empty commit_id"
89
-
90
- - id: integration_git_ref_name_non_empty
91
- scope: git_event
92
- path: ref_name
93
- rule: non-empty-string
94
- description: "Git event must have non-empty ref_name"
95
-
96
- - id: integration_git_event_kind_valid
97
- scope: git_event
98
- path: event_kind
99
- rule: enum(commit,push,merge,tag,branch_create,branch_delete)
100
- description: "Git event_kind must be valid enum value"
101
-
102
- - id: integration_git_timestamp_iso
103
- scope: git_event
104
- path: timestamp
105
- rule: iso-datetime
106
- description: "Git event timestamp must be ISO 8601 datetime"
107
-
108
- # ========================================
109
- # CI Event Invariants
110
- # ========================================
111
- - id: integration_ci_provider_non_empty
112
- scope: ci_event
113
- path: ci_provider
114
- rule: non-empty-string
115
- description: "CI event must have non-empty ci_provider"
116
-
117
- - id: integration_ci_pipeline_id_non_empty
118
- scope: ci_event
119
- path: pipeline_id
120
- rule: non-empty-string
121
- description: "CI event must have non-empty pipeline_id"
122
-
123
- - id: integration_ci_run_id_non_empty
124
- scope: ci_event
125
- path: run_id
126
- rule: non-empty-string
127
- description: "CI event must have non-empty run_id"
128
-
129
- - id: integration_ci_status_valid
130
- scope: ci_event
131
- path: status
132
- rule: enum(pending,running,succeeded,failed,cancelled)
133
- description: "CI event status must be valid enum value"
134
-
135
- - id: integration_ci_started_at_iso
136
- scope: ci_event
137
- path: started_at
138
- rule: iso-datetime
139
- description: "If started_at present, must be ISO 8601 datetime"
140
- note: "Apply only when started_at field exists"
141
-
142
- - id: integration_ci_completed_at_iso
143
- scope: ci_event
144
- path: completed_at
145
- rule: iso-datetime
146
- description: "If completed_at present, must be ISO 8601 datetime"
147
- note: "Apply only when completed_at field exists"
5
+ # MPLP Protocol 1.0.0 — Frozen Specification
6
+ # Status: Frozen as of 2025-11-30
7
+ # Copyright: © 2026 Bangshi Beijing Network Technology Limited Company
8
+ # License: Apache-2.0 (see LICENSE at repository root)
9
+ # Any normative change requires a new protocol version.
10
+
11
+ invariants:
12
+ # ========================================
13
+ # Tool Event Invariants
14
+ # ========================================
15
+ - id: integration_tool_event_id_non_empty
16
+ scope: tool_event
17
+ path: tool_id
18
+ rule: non-empty-string
19
+ description: "Tool event must have non-empty tool_id"
20
+
21
+ - id: integration_tool_kind_valid
22
+ scope: tool_event
23
+ path: tool_kind
24
+ rule: enum(formatter,linter,test_runner,generator,other)
25
+ description: "Tool kind must be valid enum value"
26
+
27
+ - id: integration_tool_invocation_id_uuid
28
+ scope: tool_event
29
+ path: invocation_id
30
+ rule: uuid-v4
31
+ description: "Tool invocation_id must be UUID v4"
32
+
33
+ - id: integration_tool_status_valid
34
+ scope: tool_event
35
+ path: status
36
+ rule: enum(pending,running,succeeded,failed,cancelled)
37
+ description: "Tool event status must be valid enum value"
38
+
39
+ - id: integration_tool_started_at_iso
40
+ scope: tool_event
41
+ path: started_at
42
+ rule: iso-datetime
43
+ description: "If started_at present, must be ISO 8601 datetime"
44
+ note: "Apply only when started_at field exists"
45
+
46
+ # ========================================
47
+ # File Update Event Invariants
48
+ # ========================================
49
+ - id: integration_file_path_non_empty
50
+ scope: file_update_event
51
+ path: file_path
52
+ rule: non-empty-string
53
+ description: "File update event must have non-empty file_path"
54
+
55
+ - id: integration_file_change_type_valid
56
+ scope: file_update_event
57
+ path: change_type
58
+ rule: enum(created,modified,deleted,renamed)
59
+ description: "File change_type must be valid enum value"
60
+
61
+ - id: integration_file_timestamp_iso
62
+ scope: file_update_event
63
+ path: timestamp
64
+ rule: iso-datetime
65
+ description: "File update timestamp must be ISO 8601 datetime"
66
+
67
+ # ========================================
68
+ # Git Event Invariants
69
+ # ========================================
70
+ - id: integration_git_repo_url_non_empty
71
+ scope: git_event
72
+ path: repo_url
73
+ rule: non-empty-string
74
+ description: "Git event must have non-empty repo_url"
75
+
76
+ - id: integration_git_commit_id_non_empty
77
+ scope: git_event
78
+ path: commit_id
79
+ rule: non-empty-string
80
+ description: "Git event must have non-empty commit_id"
81
+
82
+ - id: integration_git_ref_name_non_empty
83
+ scope: git_event
84
+ path: ref_name
85
+ rule: non-empty-string
86
+ description: "Git event must have non-empty ref_name"
87
+
88
+ - id: integration_git_event_kind_valid
89
+ scope: git_event
90
+ path: event_kind
91
+ rule: enum(commit,push,merge,tag,branch_create,branch_delete)
92
+ description: "Git event_kind must be valid enum value"
93
+
94
+ - id: integration_git_timestamp_iso
95
+ scope: git_event
96
+ path: timestamp
97
+ rule: iso-datetime
98
+ description: "Git event timestamp must be ISO 8601 datetime"
99
+
100
+ # ========================================
101
+ # CI Event Invariants
102
+ # ========================================
103
+ - id: integration_ci_provider_non_empty
104
+ scope: ci_event
105
+ path: ci_provider
106
+ rule: non-empty-string
107
+ description: "CI event must have non-empty ci_provider"
108
+
109
+ - id: integration_ci_pipeline_id_non_empty
110
+ scope: ci_event
111
+ path: pipeline_id
112
+ rule: non-empty-string
113
+ description: "CI event must have non-empty pipeline_id"
114
+
115
+ - id: integration_ci_run_id_non_empty
116
+ scope: ci_event
117
+ path: run_id
118
+ rule: non-empty-string
119
+ description: "CI event must have non-empty run_id"
120
+
121
+ - id: integration_ci_status_valid
122
+ scope: ci_event
123
+ path: status
124
+ rule: enum(pending,running,succeeded,failed,cancelled)
125
+ description: "CI event status must be valid enum value"
126
+
127
+ - id: integration_ci_started_at_iso
128
+ scope: ci_event
129
+ path: started_at
130
+ rule: iso-datetime
131
+ description: "If started_at present, must be ISO 8601 datetime"
132
+ note: "Apply only when started_at field exists"
133
+
134
+ - id: integration_ci_completed_at_iso
135
+ scope: ci_event
136
+ path: completed_at
137
+ rule: iso-datetime
138
+ description: "If completed_at present, must be ISO 8601 datetime"
139
+ note: "Apply only when completed_at field exists"