@kindgi/specs 0.1.8-rc.0 → 0.1.9-rc.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kindgi/specs",
3
- "version": "0.1.8-rc.0",
3
+ "version": "0.1.9-rc.0",
4
4
  "description": "Canonical JSON Schemas (Draft 2020-12) for every Kindgi artifact kind — flow, agent, tool, capability, guardrail, policy, event, run event, memory, provenance, pack, compliance evidence, audit bundle, eval suite, discoverable entity. The wire contracts every SDK, runtime, and external tool validates against. Each schema is importable by name as `@kindgi/specs/<name>.schema.json`.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -67,7 +67,10 @@
67
67
  "service-account-unregistered",
68
68
  "person-added",
69
69
  "person-granted",
70
- "person-ungranted"
70
+ "person-ungranted",
71
+ "trigger-owner-set",
72
+ "environment-order-set",
73
+ "deployment-promoted"
71
74
  ]
72
75
  },
73
76
  "timestamp": {
@@ -3,7 +3,7 @@
3
3
  "$id": "https://kindgi.com/schemas/v1/guardrail.schema.json",
4
4
  "$comment": "schema-version: 1.1.0",
5
5
  "title": "Guardrail",
6
- "description": "An assertion about agent behavior. Enforced at runtime (halt / retry / escalate / log-only / compensate per guardrail) AND in CI (blocks builds). Same definition, two enforcement paths — no drift between what tests check and what prod enforces. Zero-LLM checks are default (fast, deterministic); LLM-judge scorers are an opt-in class with explicit cost declaration. Schema-version 1.1.0 matches the `Guardrail` type: `check` is required, a `retry` action needs `maxAttempts`, `kind` and `on-violation` accept any non-empty string (the built-ins are listed as `examples`), and `sandbox` / `limits` / `network` / `needsSpec` are allowed.",
6
+ "description": "An assertion about agent behavior. Checked at runtime, where in 0.1 only `halt` stops the turn and every other action is recorded, AND in CI (blocks builds). Same definition, two enforcement paths — no drift between what tests check and what prod enforces. Zero-LLM checks are default (fast, deterministic); LLM-judge scorers are an opt-in class with explicit cost declaration. Schema-version 1.1.0 matches the `Guardrail` type: `check` is required, a `retry` object, when given, needs `maxAttempts`, `kind` and `on-violation` accept any non-empty string (the built-ins are listed as `examples`), and `sandbox` / `limits` / `network` / `needsSpec` are allowed.",
7
7
  "type": "object",
8
8
  "required": ["id", "kind", "check", "action"],
9
9
  "additionalProperties": false,
@@ -209,12 +209,12 @@
209
209
  "type": "string",
210
210
  "minLength": 1,
211
211
  "examples": ["halt", "retry", "escalate", "log-only", "compensate"],
212
- "description": "What happens when the guardrail fires. Open string: any non-empty name is accepted here, and an action handler registered under that name applies it; when the caller evaluates with an action-handler registry, a name with no handler fails with `unknown-action`. Built-in actions: 'halt' = fail the run. 'retry' = re-execute the step (needs `retry.maxAttempts`). 'escalate' = route to HITL review. 'log-only' = record but don't block. 'compensate' = invoke a compensation action."
212
+ "description": "What a failed check does to the agent turn. Open string: any non-empty name is accepted here. In 0.1 the runtime acts only on 'halt': the turn fails with `guardrail-violation` and its response is not stored. Any other name is recorded as a violation, as 'log-only' is, and the turn completes. Built-in actions: 'halt' = fail the turn. 'log-only' = record, don't block. 'retry', 'escalate' and 'compensate' are recorded like 'log-only' in 0.1: nothing runs the turn again, escalates or calls a compensating tool."
213
213
  },
214
214
  "retry": {
215
215
  "type": "object",
216
216
  "additionalProperties": false,
217
- "description": "For on-violation = 'retry'.",
217
+ "description": "For on-violation = 'retry': the attempts it asks for. In 0.1 nothing acts on it: there's no second attempt.",
218
218
  "required": ["maxAttempts"],
219
219
  "properties": {
220
220
  "maxAttempts": {
@@ -226,11 +226,11 @@
226
226
  },
227
227
  "escalateTo": {
228
228
  "type": "string",
229
- "description": "For on-violation = 'escalate': reviewer role or queue id."
229
+ "description": "For on-violation = 'escalate': a reviewer role or queue id. In 0.1 nothing escalates."
230
230
  },
231
231
  "compensateWith": {
232
232
  "type": "string",
233
- "description": "For on-violation = 'compensate': tool id to invoke as compensation."
233
+ "description": "For on-violation = 'compensate': the compensating tool's id. In 0.1 that tool isn't called."
234
234
  }
235
235
  }
236
236
  },
@@ -158,6 +158,10 @@
158
158
  "type": "boolean",
159
159
  "description": "Whether the tool may change something (`tool.schema.json` `mutating`). `false` makes it read-only: it runs in a dry run, and per-tool approval gates don't ask before it by default. Absent means it may."
160
160
  },
161
+ "needsApprovalWhenUnattended": {
162
+ "type": "boolean",
163
+ "description": "Whether a person must say yes to every call of the tool in a run no person started (`tool.schema.json` `needsApprovalWhenUnattended`). Absent means `false`."
164
+ },
161
165
  "spec": {
162
166
  "$ref": "#/$defs/openObject",
163
167
  "description": "A declarative tool's spec (`tool.schema.json` `spec`, e.g. `kind: 'http'`). A runtime runs a tool that has one itself, resolving its `secretRef`s, rather than calling the pack service."
@@ -68,6 +68,10 @@
68
68
  "type": "boolean",
69
69
  "description": "Semantic marker: `true` when this tool causes observable side effects (writes state, calls external APIs with mutations, sends messages). Read-only tools set `false`. Absent defaults to `true`. Consumed by the HITL default classifier — a read-only tool passes straight through, a mutating tool asks on first use."
70
70
  },
71
+ "needsApprovalWhenUnattended": {
72
+ "type": "boolean",
73
+ "description": "`true` when a person must say yes to every call of this tool in a run no person started (a schedule, a webhook, an event or a service account's key started it). In such a run an agent's call waits for a person's yes whatever the agent's approval rules say, and a flow's tool step that calls it is refused. Absent means `false`. Optional additive field."
74
+ },
71
75
  "limits": {
72
76
  "type": "object",
73
77
  "additionalProperties": false,