@plurnk/plurnk-contracts 6.0.0 → 7.0.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/.env.defaults +5 -5
- package/README.md +4 -4
- package/SPEC.md +158 -2054
- package/dist/schema/{AguiDiscovery.json → AcpDiscovery.json} +4 -4
- package/dist/schema/ApplicationOperationEvent.json +2 -2
- package/dist/schema/CapabilityDescriptor.json +3 -3
- package/dist/schema/CapabilityPolicy.json +5 -1
- package/dist/schema/CapabilitySelector.json +3 -3
- package/dist/schema/ClientInteractionProjection.json +2 -2
- package/dist/schema/ClientInteractionRequest.json +26 -10
- package/dist/schema/ClientInteractionResolution.json +14 -6
- package/dist/schema/FunctionalityDefinitionState.json +3 -3
- package/dist/schema/FunctionalityDiscoverQuery.json +2 -1
- package/dist/schema/FunctionalityMutationResult.json +1 -1
- package/dist/schema/MatcherBody.json +2 -2
- package/dist/schema/McpServerDefinition.json +35 -9
- package/dist/schema/ModelCatalogPage.json +1 -1
- package/dist/schema/ModelRoute.json +2 -2
- package/dist/schema/Notice.json +1 -1
- package/dist/schema/PlurnkStatement.json +8 -8
- package/dist/schema/ProposalDisposition.json +1 -1
- package/dist/schema/ProposalPolicy.json +1 -1
- package/dist/schema/ProposalProjection.json +57 -6
- package/dist/schema/ResourceSelection.json +1 -1
- package/dist/schema/RollbackReport.json +1 -1
- package/dist/schema/{WorkerOwner.json → SessionOwner.json} +2 -2
- package/dist/schema/SkillDefinition.json +8 -7
- package/dist/src/Application.d.ts +97 -66
- package/dist/src/Application.d.ts.map +1 -1
- package/dist/src/Application.js +198 -1
- package/dist/src/Application.js.map +1 -1
- package/dist/src/ApplicationNotifications.d.ts +52 -0
- package/dist/src/ApplicationNotifications.d.ts.map +1 -0
- package/dist/src/ApplicationNotifications.js +2 -0
- package/dist/src/ApplicationNotifications.js.map +1 -0
- package/dist/src/ApplicationPort.d.ts +84 -75
- package/dist/src/ApplicationPort.d.ts.map +1 -1
- package/dist/src/ApplicationStream.d.ts +4 -4
- package/dist/src/ApplicationStream.d.ts.map +1 -1
- package/dist/src/CapabilityAdmission.d.ts +2 -0
- package/dist/src/CapabilityAdmission.d.ts.map +1 -1
- package/dist/src/CapabilityAdmission.js +14 -2
- package/dist/src/CapabilityAdmission.js.map +1 -1
- package/dist/src/Excerpt.js +1 -1
- package/dist/src/Excerpt.js.map +1 -1
- package/dist/src/Functionality.d.ts +3 -6
- package/dist/src/Functionality.d.ts.map +1 -1
- package/dist/src/HttpOrigin.d.ts +3 -3
- package/dist/src/HttpOrigin.js +1 -1
- package/dist/src/JsonDocument.js +1 -1
- package/dist/src/JsonDocument.js.map +1 -1
- package/dist/src/JsonResult.js +1 -1
- package/dist/src/JsonResult.js.map +1 -1
- package/dist/src/LogRow.d.ts +31 -0
- package/dist/src/LogRow.d.ts.map +1 -0
- package/dist/src/LogRow.js +46 -0
- package/dist/src/LogRow.js.map +1 -0
- package/dist/src/LoopLifecycle.d.ts +1 -1
- package/dist/src/LoopLifecycle.d.ts.map +1 -1
- package/dist/src/LoopLifecycle.js +2 -2
- package/dist/src/LoopLifecycle.js.map +1 -1
- package/dist/src/MessageResource.d.ts +4 -4
- package/dist/src/MessageResource.d.ts.map +1 -1
- package/dist/src/PathSyntax.js +2 -2
- package/dist/src/PathSyntax.js.map +1 -1
- package/dist/src/PlurnkParseError.js +1 -1
- package/dist/src/PlurnkParseError.js.map +1 -1
- package/dist/src/Problems.js +1 -1
- package/dist/src/Problems.js.map +1 -1
- package/dist/src/TurnDisposition.js +1 -1
- package/dist/src/TurnDisposition.js.map +1 -1
- package/dist/src/Validator.d.ts +5 -108
- package/dist/src/Validator.d.ts.map +1 -1
- package/dist/src/Validator.js +97 -518
- package/dist/src/Validator.js.map +1 -1
- package/dist/src/guards.js +1 -1
- package/dist/src/guards.js.map +1 -1
- package/dist/src/index.d.ts +6 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +7 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/types.d.ts +1 -1
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.generated.d.ts +91 -187
- package/dist/src/types.generated.d.ts.map +1 -1
- package/dist/src/types.js +7 -7
- package/dist/src/types.js.map +1 -1
- package/package.json +5 -9
- package/plurnk.md +22 -22
- package/dist/conformance/agui-v1.json +0 -716
- package/dist/schema/A2aAgentDefinition.json +0 -76
- package/dist/schema/AguiClientConformance.json +0 -74
- package/dist/schema/AguiConformanceKit.json +0 -111
- package/dist/src/AguiConformance.d.ts +0 -11
- package/dist/src/AguiConformance.d.ts.map +0 -1
- package/dist/src/AguiConformance.js +0 -16
- package/dist/src/AguiConformance.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://schemas.plurnk.xyz/v0/
|
|
4
|
-
"title": "
|
|
5
|
-
"description": "The complete installed
|
|
3
|
+
"$id": "https://schemas.plurnk.xyz/v0/AcpDiscovery.json",
|
|
4
|
+
"title": "AcpDiscovery",
|
|
5
|
+
"description": "The complete installed ACP management and notification surface. Action and notification names are object keys so identity has one representation.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"required": ["schemaVersion", "actions", "notifications", "display"],
|
|
8
8
|
"additionalProperties": false,
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"additionalProperties": false,
|
|
47
47
|
"properties": {
|
|
48
48
|
"scope": {
|
|
49
|
-
"enum": ["daemon", "workspace", "
|
|
49
|
+
"enum": ["daemon", "workspace", "session"]
|
|
50
50
|
},
|
|
51
51
|
"inputSchema": {
|
|
52
52
|
"$ref": "#/$defs/jsonSchema"
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
"title": "ApplicationOperationEvent",
|
|
5
5
|
"description": "A core-owned dispatch boundary. A settled dispatch has its exact result; it does not assert asynchronous process completion.",
|
|
6
6
|
"type": "object",
|
|
7
|
-
"required": ["
|
|
7
|
+
"required": ["sessionId", "loopId", "turnId", "sequence", "origin", "projectRoot", "statement", "phase"],
|
|
8
8
|
"additionalProperties": false,
|
|
9
9
|
"properties": {
|
|
10
|
-
"
|
|
10
|
+
"sessionId": { "type": "integer", "minimum": 1 },
|
|
11
11
|
"loopId": { "type": "integer", "minimum": 1 },
|
|
12
12
|
"turnId": { "type": "integer", "minimum": 1 },
|
|
13
13
|
"sequence": { "type": "integer", "minimum": 1 },
|
|
@@ -11,12 +11,12 @@
|
|
|
11
11
|
"description": "An operation keyword, or a runtime tag: an execution's operation is its runtime.",
|
|
12
12
|
"anyOf": [
|
|
13
13
|
{ "enum": ["FIND", "READ", "EDIT", "COPY", "MOVE", "SEND", "BARE", "WORK", "FORK", "KILL"] },
|
|
14
|
-
{ "type": "string", "pattern": "^[a-z][a-z0-9
|
|
14
|
+
{ "type": "string", "pattern": "^[a-z][a-z0-9+._-]*$" }
|
|
15
15
|
],
|
|
16
16
|
"tsType": "\"FIND\" | \"READ\" | \"EDIT\" | \"COPY\" | \"MOVE\" | \"SEND\" | \"BARE\" | \"WORK\" | \"FORK\" | \"KILL\" | Lowercase<string>"
|
|
17
17
|
},
|
|
18
|
-
"scheme": { "type": "string", "pattern": "^[a-z][a-z0-9
|
|
19
|
-
"runtime": { "type": "string", "pattern": "^[a-z][a-z0-9
|
|
18
|
+
"scheme": { "type": "string", "pattern": "^[a-z][a-z0-9+._-]*$" },
|
|
19
|
+
"runtime": { "type": "string", "pattern": "^[a-z][a-z0-9+._-]*$" },
|
|
20
20
|
"tool": { "type": "string", "minLength": 1 },
|
|
21
21
|
"access": { "enum": ["observe", "mutate", "execute", "interact", "control"] },
|
|
22
22
|
"traits": {
|
|
@@ -2,10 +2,14 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://schemas.plurnk.xyz/v0/CapabilityPolicy.json",
|
|
4
4
|
"title": "CapabilityPolicy",
|
|
5
|
-
"description": "One
|
|
5
|
+
"description": "One capability-policy layer. Deny wins; when only is present, a demand must match at least one selector; allow pre-approves matching admitted proposals.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"additionalProperties": false,
|
|
8
8
|
"properties": {
|
|
9
|
+
"allow": {
|
|
10
|
+
"type": "array",
|
|
11
|
+
"items": { "$ref": "https://schemas.plurnk.xyz/v0/CapabilitySelector.json" }
|
|
12
|
+
},
|
|
9
13
|
"only": {
|
|
10
14
|
"type": "array",
|
|
11
15
|
"items": { "$ref": "https://schemas.plurnk.xyz/v0/CapabilitySelector.json" }
|
|
@@ -11,12 +11,12 @@
|
|
|
11
11
|
"description": "An operation keyword, or a runtime tag: an execution's operation is its runtime.",
|
|
12
12
|
"anyOf": [
|
|
13
13
|
{ "enum": ["FIND", "READ", "EDIT", "COPY", "MOVE", "SEND", "BARE", "WORK", "FORK", "KILL"] },
|
|
14
|
-
{ "type": "string", "pattern": "^[a-z][a-z0-9
|
|
14
|
+
{ "type": "string", "pattern": "^[a-z][a-z0-9+._-]*$" }
|
|
15
15
|
],
|
|
16
16
|
"tsType": "\"FIND\" | \"READ\" | \"EDIT\" | \"COPY\" | \"MOVE\" | \"SEND\" | \"BARE\" | \"WORK\" | \"FORK\" | \"KILL\" | Lowercase<string>"
|
|
17
17
|
},
|
|
18
|
-
"scheme": { "type": "string", "pattern": "^[a-z][a-z0-9
|
|
19
|
-
"runtime": { "type": "string", "pattern": "^[a-z][a-z0-9
|
|
18
|
+
"scheme": { "type": "string", "pattern": "^[a-z][a-z0-9+._-]*$" },
|
|
19
|
+
"runtime": { "type": "string", "pattern": "^[a-z][a-z0-9+._-]*$" },
|
|
20
20
|
"tool": { "type": "string", "minLength": 1 },
|
|
21
21
|
"access": { "enum": ["observe", "mutate", "execute", "interact", "control"] },
|
|
22
22
|
"traits": {
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
"title": "ClientInteractionProjection",
|
|
5
5
|
"description": "The runtime-neutral client-interface projection of one pending client interaction. Live delivery and reconnect discovery expose this same shape.",
|
|
6
6
|
"type": "object",
|
|
7
|
-
"required": ["interactionId", "
|
|
7
|
+
"required": ["interactionId", "sessionId", "loopId", "turnId", "recipient", "request"],
|
|
8
8
|
"additionalProperties": false,
|
|
9
9
|
"properties": {
|
|
10
10
|
"interactionId": { "type": "integer", "minimum": 1 },
|
|
11
|
-
"
|
|
11
|
+
"sessionId": { "type": "integer", "minimum": 1 },
|
|
12
12
|
"loopId": { "type": "integer", "minimum": 1 },
|
|
13
13
|
"turnId": { "type": "integer", "minimum": 1 },
|
|
14
14
|
"recipient": { "type": "string", "minLength": 1 },
|
|
@@ -2,14 +2,30 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://schemas.plurnk.xyz/v0/ClientInteractionRequest.json",
|
|
4
4
|
"title": "ClientInteractionRequest",
|
|
5
|
-
"description": "A runtime-neutral
|
|
6
|
-
"
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
5
|
+
"description": "A runtime-neutral client elicitation request in standard ACP v2 / MCP form or URL mode. Protocol-private continuation state is excluded.",
|
|
6
|
+
"oneOf": [
|
|
7
|
+
{
|
|
8
|
+
"type": "object",
|
|
9
|
+
"required": ["toolName", "mode", "message", "requestedSchema"],
|
|
10
|
+
"additionalProperties": false,
|
|
11
|
+
"properties": {
|
|
12
|
+
"toolName": { "type": "string", "minLength": 1 },
|
|
13
|
+
"mode": { "const": "form" },
|
|
14
|
+
"message": { "type": "string", "minLength": 1 },
|
|
15
|
+
"requestedSchema": { "type": "object", "additionalProperties": true }
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"type": "object",
|
|
20
|
+
"required": ["toolName", "mode", "message", "elicitationId", "url"],
|
|
21
|
+
"additionalProperties": false,
|
|
22
|
+
"properties": {
|
|
23
|
+
"toolName": { "type": "string", "minLength": 1 },
|
|
24
|
+
"mode": { "const": "url" },
|
|
25
|
+
"message": { "type": "string", "minLength": 1 },
|
|
26
|
+
"elicitationId": { "type": "string", "minLength": 1 },
|
|
27
|
+
"url": { "type": "string", "format": "uri", "minLength": 1 }
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
]
|
|
15
31
|
}
|
|
@@ -2,23 +2,31 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://schemas.plurnk.xyz/v0/ClientInteractionResolution.json",
|
|
4
4
|
"title": "ClientInteractionResolution",
|
|
5
|
-
"description": "The
|
|
5
|
+
"description": "The standard ACP v2 / MCP elicitation response that settles one pending interaction. Declined and cancelled interactions carry no fabricated content.",
|
|
6
6
|
"oneOf": [
|
|
7
7
|
{
|
|
8
8
|
"type": "object",
|
|
9
|
-
"required": ["
|
|
9
|
+
"required": ["action"],
|
|
10
10
|
"additionalProperties": false,
|
|
11
11
|
"properties": {
|
|
12
|
-
"
|
|
13
|
-
"
|
|
12
|
+
"action": { "const": "accept" },
|
|
13
|
+
"content": { "type": "object", "additionalProperties": true }
|
|
14
14
|
}
|
|
15
15
|
},
|
|
16
16
|
{
|
|
17
17
|
"type": "object",
|
|
18
|
-
"required": ["
|
|
18
|
+
"required": ["action"],
|
|
19
19
|
"additionalProperties": false,
|
|
20
20
|
"properties": {
|
|
21
|
-
"
|
|
21
|
+
"action": { "const": "decline" }
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"type": "object",
|
|
26
|
+
"required": ["action"],
|
|
27
|
+
"additionalProperties": false,
|
|
28
|
+
"properties": {
|
|
29
|
+
"action": { "const": "cancel" }
|
|
22
30
|
}
|
|
23
31
|
}
|
|
24
32
|
]
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
"properties": {
|
|
10
10
|
"alias": { "type": "string", "minLength": 1 },
|
|
11
11
|
"origin": {
|
|
12
|
-
"description": "Who owns this definition: the service baseline, the workspace, or one
|
|
13
|
-
"enum": ["service", "workspace", "
|
|
12
|
+
"description": "Who owns this definition: the service baseline, the workspace, or one session. A session-scoped family (env) owns its definitions per session, so origin names ownership rather than scope.",
|
|
13
|
+
"enum": ["service", "workspace", "session"]
|
|
14
14
|
},
|
|
15
15
|
"state": {
|
|
16
16
|
"description": "disabled: available, model-invisible. dormant: enabled without a resident publication. active: enabled and prepared. unavailable: enabled but preparation has an exact Problem. authorization-required: enabled and awaiting a protocol continuation.",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"$ref": "https://schemas.plurnk.xyz/v0/FunctionalityProvenance.json"
|
|
23
23
|
},
|
|
24
24
|
"inherited": {
|
|
25
|
-
"description": "The
|
|
25
|
+
"description": "The Session this entry was copied from when this Session was created (WORK or FORK), preserved across generations until this Session changes the entry. Absent for an entry this Session set itself. Session-scoped families only.",
|
|
26
26
|
"type": "string",
|
|
27
27
|
"minLength": 1
|
|
28
28
|
},
|
|
@@ -8,8 +8,9 @@
|
|
|
8
8
|
"properties": {
|
|
9
9
|
"query": { "type": "string", "minLength": 1 },
|
|
10
10
|
"source": { "type": "string", "minLength": 1 },
|
|
11
|
+
"rule": { "type": "string", "minLength": 1 },
|
|
11
12
|
"configuration": {
|
|
12
|
-
"description": "Caller-supplied configuration material the family interprets as candidates (a client's own
|
|
13
|
+
"description": "Caller-supplied configuration material the family interprets as candidates (a client's own PLURNK_SCHEDULE_* environment, a local directory list). It contributes candidates with client-configuration provenance; it never becomes durable authority.",
|
|
13
14
|
"type": "object"
|
|
14
15
|
}
|
|
15
16
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://schemas.plurnk.xyz/v0/FunctionalityMutationResult.json",
|
|
4
|
-
"description": "The committed resource outcome of add, replace, enable, disable, or remove ({§functionality-
|
|
4
|
+
"description": "The committed resource outcome of add, replace, enable, disable, or remove ({§functionality-replacement}): 202 when the resulting definition requires authorization; otherwise 201 when add or replace creates a local definition (including an inherited override), or 200 for assignment to an existing local definition and settled enable/disable/remove. Only replace may change a different local definition. A mutation names the one alias it concerned, or, for an add that names its definitions by their content ({§functionality-replacement}), lists every definition it admitted.",
|
|
5
5
|
"title": "FunctionalityMutationResult",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"additionalProperties": false,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://schemas.plurnk.xyz/v0/MatcherBody.json",
|
|
4
4
|
"title": "MatcherBody",
|
|
5
|
-
"description": "Parsed single-line body of a matcher-bearing statement, discriminated on `dialect`. The dialect is determined by the body's leading characters (`//` xpath, `/` regex, `$` jsonpath, `~` full-text, `&` graph, else glob); a body the parser could not read in its claimed dialect is `unreadable` ({§matcher-
|
|
5
|
+
"description": "Parsed single-line body of a matcher-bearing statement, discriminated on `dialect`. The dialect is determined by the body's leading characters (`//` xpath, `/` regex, `$` jsonpath, `~` full-text, `&` graph, else glob); a body the parser could not read in its claimed dialect is `unreadable` ({§matcher-prefix-claims}). The regex variant carries pattern and flags split out of the `/pattern/flags` literal; every variant remains JSON-serializable.",
|
|
6
6
|
"oneOf": [
|
|
7
7
|
{ "$ref": "#/$defs/XPathBody" },
|
|
8
8
|
{ "$ref": "#/$defs/RegexBody" },
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
},
|
|
73
73
|
"UnreadableBody": {
|
|
74
74
|
"title": "UnreadableBody",
|
|
75
|
-
"description": "A matcher the parser could not read in the dialect its prefix claims ({§matcher-
|
|
75
|
+
"description": "A matcher the parser could not read in the dialect its prefix claims ({§matcher-prefix-claims}): the authored text, the diagnostic, and the working form. The statement is admitted and the operation refuses with that message and recovery; it is never a contract strike.",
|
|
76
76
|
"type": "object",
|
|
77
77
|
"required": ["dialect", "raw", "message", "recovery"],
|
|
78
78
|
"additionalProperties": false,
|
|
@@ -16,21 +16,39 @@
|
|
|
16
16
|
"title": "McpServerName",
|
|
17
17
|
"description": "The server's alias: the runtime tag whose fence invokes it and its resource scheme.",
|
|
18
18
|
"type": "string",
|
|
19
|
-
"pattern": "^[a-z][a-z0-
|
|
19
|
+
"pattern": "^[a-z][a-z0-9_-]*$"
|
|
20
|
+
},
|
|
21
|
+
"plurnkWorkspace": {
|
|
22
|
+
"description": "Target workspace name(s) or '*' for operator-scoped multi-workspace routing; ${NAME} references expand against the operator environment.",
|
|
23
|
+
"oneOf": [
|
|
24
|
+
{
|
|
25
|
+
"type": "string",
|
|
26
|
+
"minLength": 1
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"type": "array",
|
|
30
|
+
"minItems": 1,
|
|
31
|
+
"items": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"minLength": 1
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
"plurnkSession": {
|
|
39
|
+
"description": "Default target session name in the workspace for server-initiated Open Work; ${NAME} references expand against the workspace-composed operator environment.",
|
|
40
|
+
"type": "string",
|
|
41
|
+
"minLength": 1
|
|
20
42
|
},
|
|
21
43
|
"stdio": {
|
|
22
44
|
"title": "McpStdioServerDefinition",
|
|
23
45
|
"type": "object",
|
|
24
46
|
"additionalProperties": false,
|
|
25
47
|
"required": [
|
|
26
|
-
"name",
|
|
27
48
|
"type",
|
|
28
49
|
"command"
|
|
29
50
|
],
|
|
30
51
|
"properties": {
|
|
31
|
-
"name": {
|
|
32
|
-
"$ref": "#/$defs/name"
|
|
33
|
-
},
|
|
34
52
|
"type": {
|
|
35
53
|
"description": "A local server: a subprocess speaking MCP over its standard input and output.",
|
|
36
54
|
"const": "stdio"
|
|
@@ -58,6 +76,12 @@
|
|
|
58
76
|
"description": "An absolute working directory, optionally using ${NAME} references. When absent the host supplies a workspace-owned state directory outside the project.",
|
|
59
77
|
"type": "string",
|
|
60
78
|
"minLength": 1
|
|
79
|
+
},
|
|
80
|
+
"plurnkWorkspace": {
|
|
81
|
+
"$ref": "#/$defs/plurnkWorkspace"
|
|
82
|
+
},
|
|
83
|
+
"plurnkSession": {
|
|
84
|
+
"$ref": "#/$defs/plurnkSession"
|
|
61
85
|
}
|
|
62
86
|
}
|
|
63
87
|
},
|
|
@@ -66,14 +90,10 @@
|
|
|
66
90
|
"type": "object",
|
|
67
91
|
"additionalProperties": false,
|
|
68
92
|
"required": [
|
|
69
|
-
"name",
|
|
70
93
|
"type",
|
|
71
94
|
"url"
|
|
72
95
|
],
|
|
73
96
|
"properties": {
|
|
74
|
-
"name": {
|
|
75
|
-
"$ref": "#/$defs/name"
|
|
76
|
-
},
|
|
77
97
|
"type": {
|
|
78
98
|
"description": "A remote server: an MCP endpoint over Streamable HTTP.",
|
|
79
99
|
"const": "streamable-http"
|
|
@@ -114,6 +134,12 @@
|
|
|
114
134
|
"$ref": "https://schemas.plurnk.xyz/v0/McpOAuth.json"
|
|
115
135
|
}
|
|
116
136
|
]
|
|
137
|
+
},
|
|
138
|
+
"plurnkWorkspace": {
|
|
139
|
+
"$ref": "#/$defs/plurnkWorkspace"
|
|
140
|
+
},
|
|
141
|
+
"plurnkSession": {
|
|
142
|
+
"$ref": "#/$defs/plurnkSession"
|
|
117
143
|
}
|
|
118
144
|
}
|
|
119
145
|
}
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
"attachment": { "type": "boolean" },
|
|
107
107
|
"reasoning": { "type": "boolean" },
|
|
108
108
|
"efforts": {
|
|
109
|
-
"description": "Portable efforts admitted for this exact route by the installed provider adapter and provider-wide operator declarations; not a
|
|
109
|
+
"description": "Portable efforts admitted for this exact route by the installed provider adapter and provider-wide operator declarations; not a session's combined model/spawn policy intersection.",
|
|
110
110
|
"type": "array",
|
|
111
111
|
"minItems": 1,
|
|
112
112
|
"uniqueItems": true,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://schemas.plurnk.xyz/v0/ModelRoute.json",
|
|
4
4
|
"title": "ModelRoute",
|
|
5
|
-
"description": "A client-visible resolved provider/model identity. Alias is present only when a declared alias supplied the route; provider configuration remains private to the daemon. effort is the
|
|
5
|
+
"description": "A client-visible resolved provider/model identity. Alias is present only when a declared alias supplied the route; provider configuration remains private to the daemon. effort is the session's durable effort selection — absent when the model has no reasoning dimension.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"required": ["provider", "model"],
|
|
8
8
|
"dependentRequired": {
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"$ref": "https://schemas.plurnk.xyz/v0/Effort.json"
|
|
28
28
|
},
|
|
29
29
|
"effortSource": {
|
|
30
|
-
"description": "Whether effort was chosen through
|
|
30
|
+
"description": "Whether effort was chosen through setSessionEffort (explicit) or seeded from the alias configuration (default). Present exactly when effort is.",
|
|
31
31
|
"type": "string",
|
|
32
32
|
"enum": ["default", "explicit"]
|
|
33
33
|
}
|
package/dist/schema/Notice.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"properties": {
|
|
10
10
|
"source": {
|
|
11
11
|
"type": "string",
|
|
12
|
-
"pattern": "^[a-z]+(:[a-z][a-z0-9-]*)?$",
|
|
12
|
+
"pattern": "^[a-z]+(:[a-z][a-z0-9+._-]*)?$",
|
|
13
13
|
"description": "Producer identifier. Top-level for self-contained subsystems; colon-namespaced for parameterized producers such as `provider:openai` or `exec:search`."
|
|
14
14
|
},
|
|
15
15
|
"kind": {
|
|
@@ -149,11 +149,11 @@
|
|
|
149
149
|
},
|
|
150
150
|
"matcher": {
|
|
151
151
|
"$ref": "#/$defs/MatcherBodyOrNull",
|
|
152
|
-
"description": "The selection matcher lifted from the heading
|
|
152
|
+
"description": "The selection matcher lifted from the heading ({§parse-recovery}); null when the heading carries none."
|
|
153
153
|
},
|
|
154
154
|
"body": {
|
|
155
155
|
"type": "null",
|
|
156
|
-
"description": "Retrieval bodies normalize to separate NOTE statements; selection belongs to the header ({§
|
|
156
|
+
"description": "Retrieval bodies normalize to separate NOTE statements; selection belongs to the header ({§op-shapes})."
|
|
157
157
|
},
|
|
158
158
|
"position": {
|
|
159
159
|
"$ref": "#/$defs/PositionRef"
|
|
@@ -191,7 +191,7 @@
|
|
|
191
191
|
},
|
|
192
192
|
"matcher": {
|
|
193
193
|
"$ref": "#/$defs/MatcherBodyOrNull",
|
|
194
|
-
"description": "The selection matcher lifted from the heading
|
|
194
|
+
"description": "The selection matcher lifted from the heading ({§parse-recovery}); null when the heading carries none."
|
|
195
195
|
},
|
|
196
196
|
"body": {
|
|
197
197
|
"type": "null"
|
|
@@ -232,7 +232,7 @@
|
|
|
232
232
|
},
|
|
233
233
|
"matcher": {
|
|
234
234
|
"$ref": "#/$defs/MatcherBodyOrNull",
|
|
235
|
-
"description": "The selection matcher lifted from the heading
|
|
235
|
+
"description": "The selection matcher lifted from the heading ({§parse-recovery}); null when the heading carries none."
|
|
236
236
|
},
|
|
237
237
|
"body": {
|
|
238
238
|
"type": [
|
|
@@ -353,7 +353,7 @@
|
|
|
353
353
|
"runtime": {
|
|
354
354
|
"description": "The runtime tag the fence names, in its registered lowercase spelling. An execution has no operation keyword: the fence name is the runtime, and the log row's op shows it as written.",
|
|
355
355
|
"type": "string",
|
|
356
|
-
"pattern": "^[a-z][a-z0-9
|
|
356
|
+
"pattern": "^[a-z][a-z0-9+._-]*$",
|
|
357
357
|
"tsType": "Lowercase<string>"
|
|
358
358
|
},
|
|
359
359
|
"op": {
|
|
@@ -448,15 +448,15 @@
|
|
|
448
448
|
},
|
|
449
449
|
"lineMarker": {
|
|
450
450
|
"$ref": "#/$defs/TextLineMarkerOrNull",
|
|
451
|
-
"description": "Scope of the kill: lines of a log body or of an entry ({§
|
|
451
|
+
"description": "Scope of the kill: lines of a log body or of an entry ({§op-shapes}); null kills the whole target."
|
|
452
452
|
},
|
|
453
453
|
"matcher": {
|
|
454
454
|
"$ref": "#/$defs/MatcherBodyOrNull",
|
|
455
|
-
"description": "The selection matcher lifted from the heading
|
|
455
|
+
"description": "The selection matcher lifted from the heading ({§parse-recovery}); null when the heading carries none."
|
|
456
456
|
},
|
|
457
457
|
"body": {
|
|
458
458
|
"type": ["string", "null"],
|
|
459
|
-
"description": "A `log:///` KILL carries its optional distillation, kept as the model's own NOTE row ({§log-kill-
|
|
459
|
+
"description": "A `log:///` KILL carries its optional distillation, kept as the model's own NOTE row ({§log-kill-scope}). Other KILLs take no body; their matcher rides on the heading line ({§parse-recovery})."
|
|
460
460
|
},
|
|
461
461
|
"position": {
|
|
462
462
|
"$ref": "#/$defs/PositionRef"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://schemas.plurnk.xyz/v0/ProposalDisposition.json",
|
|
4
4
|
"title": "ProposalDisposition",
|
|
5
|
-
"description": "The one core-owned settlement decision. Review waits for the
|
|
5
|
+
"description": "The one core-owned settlement decision. Review waits for the session's owner; accept and reject carry the automatic resolution core applies.",
|
|
6
6
|
"oneOf": [
|
|
7
7
|
{
|
|
8
8
|
"type": "object",
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://schemas.plurnk.xyz/v0/ProposalPolicy.json",
|
|
4
4
|
"title": "ProposalPolicy",
|
|
5
|
-
"description": "Server disposition for proposals. Review requires the
|
|
5
|
+
"description": "Server disposition for proposals. Review requires the session's owner; accept and reject settle within core.",
|
|
6
6
|
"enum": ["review", "accept", "reject"]
|
|
7
7
|
}
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
"type": "object",
|
|
7
7
|
"required": [
|
|
8
8
|
"logEntryId",
|
|
9
|
-
"
|
|
10
|
-
"
|
|
9
|
+
"sessionId",
|
|
10
|
+
"session",
|
|
11
11
|
"loopId",
|
|
12
12
|
"turnId",
|
|
13
13
|
"coordinate",
|
|
@@ -24,12 +24,12 @@
|
|
|
24
24
|
"type": "integer",
|
|
25
25
|
"minimum": 1
|
|
26
26
|
},
|
|
27
|
-
"
|
|
27
|
+
"sessionId": {
|
|
28
28
|
"type": "integer",
|
|
29
29
|
"minimum": 1
|
|
30
30
|
},
|
|
31
|
-
"
|
|
32
|
-
"description": "The requesting
|
|
31
|
+
"session": {
|
|
32
|
+
"description": "The requesting session's name.",
|
|
33
33
|
"type": "string",
|
|
34
34
|
"minLength": 1
|
|
35
35
|
},
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
},
|
|
68
68
|
{
|
|
69
69
|
"type": "string",
|
|
70
|
-
"pattern": "^[a-z][a-z0-9
|
|
70
|
+
"pattern": "^[a-z][a-z0-9+._-]*$"
|
|
71
71
|
}
|
|
72
72
|
],
|
|
73
73
|
"tsType": "\"FIND\" | \"READ\" | \"EDIT\" | \"COPY\" | \"MOVE\" | \"SEND\" | \"BARE\" | \"WORK\" | \"FORK\" | \"KILL\" | \"NOTE\" | \"WAIT\" | Lowercase<string>"
|
|
@@ -115,6 +115,57 @@
|
|
|
115
115
|
"disposition": {
|
|
116
116
|
"$ref": "https://schemas.plurnk.xyz/v0/ProposalDisposition.json"
|
|
117
117
|
},
|
|
118
|
+
"selector": {
|
|
119
|
+
"description": "The capability selector for the proposed operation, persisted on allow_always / reject_always.",
|
|
120
|
+
"$ref": "https://schemas.plurnk.xyz/v0/CapabilitySelector.json"
|
|
121
|
+
},
|
|
122
|
+
"subject": {
|
|
123
|
+
"description": "Structured ACP v2 permission subject for the proposed operation.",
|
|
124
|
+
"oneOf": [
|
|
125
|
+
{
|
|
126
|
+
"type": "object",
|
|
127
|
+
"required": ["type", "command", "cwd"],
|
|
128
|
+
"additionalProperties": false,
|
|
129
|
+
"properties": {
|
|
130
|
+
"type": { "const": "command" },
|
|
131
|
+
"command": { "type": "string" },
|
|
132
|
+
"cwd": { "type": "string", "minLength": 1 }
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"type": "object",
|
|
137
|
+
"required": ["type", "kind", "title"],
|
|
138
|
+
"additionalProperties": false,
|
|
139
|
+
"properties": {
|
|
140
|
+
"type": { "const": "tool_call" },
|
|
141
|
+
"kind": {
|
|
142
|
+
"enum": ["read", "edit", "delete", "move", "search", "execute", "think", "fetch", "switch_mode", "other"]
|
|
143
|
+
},
|
|
144
|
+
"title": { "type": "string", "minLength": 1 },
|
|
145
|
+
"locations": {
|
|
146
|
+
"type": "array",
|
|
147
|
+
"items": {
|
|
148
|
+
"type": "object",
|
|
149
|
+
"required": ["path"],
|
|
150
|
+
"additionalProperties": false,
|
|
151
|
+
"properties": {
|
|
152
|
+
"path": { "type": "string", "minLength": 1 }
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
"diff": {
|
|
157
|
+
"type": "object",
|
|
158
|
+
"required": ["path", "patch"],
|
|
159
|
+
"additionalProperties": false,
|
|
160
|
+
"properties": {
|
|
161
|
+
"path": { "type": "string" },
|
|
162
|
+
"patch": { "type": "string" }
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
]
|
|
168
|
+
},
|
|
118
169
|
"expiresAt": {
|
|
119
170
|
"description": "When the gate stops waiting and core cancels it (ISO 8601); absent while it waits indefinitely.",
|
|
120
171
|
"type": "string",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
]
|
|
41
41
|
},
|
|
42
42
|
"matcher": {
|
|
43
|
-
"description": "
|
|
43
|
+
"description": "Optional selection matcher on the source operand; refused by the owner on a destination.",
|
|
44
44
|
"oneOf": [
|
|
45
45
|
{
|
|
46
46
|
"$ref": "https://schemas.plurnk.xyz/v0/MatcherBody.json"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://schemas.plurnk.xyz/v0/RollbackReport.json",
|
|
4
4
|
"title": "RollbackReport",
|
|
5
|
-
"description": "What a rollback to a log coordinate did ({§
|
|
5
|
+
"description": "What a rollback to a log coordinate did ({§log-wire-format}): the file mutations it reversed, latest first, each as an ordinary operation of the acting client; the rows it could not reverse because they kept no patch; and, when it stopped, the row and path where the file no longer matched what that mutation wrote.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"additionalProperties": false,
|
|
8
8
|
"required": ["to", "restored", "skipped", "stopped"],
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://schemas.plurnk.xyz/v0/
|
|
4
|
-
"title": "
|
|
3
|
+
"$id": "https://schemas.plurnk.xyz/v0/SessionOwner.json",
|
|
4
|
+
"title": "SessionOwner",
|
|
5
5
|
"description": "A workspace-scoped approval owner, the client tools it implements, and whether a person attends it. Capabilities persist while disconnected; a message never changes ownership.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"required": ["address", "tools", "interactive"],
|
|
@@ -5,14 +5,7 @@
|
|
|
5
5
|
"description": "One standard Agent Skill and its source. Source locations are inputs, not installation scopes.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"additionalProperties": false,
|
|
8
|
-
"required": ["name"],
|
|
9
8
|
"properties": {
|
|
10
|
-
"name": {
|
|
11
|
-
"description": "The standard Agent Skills name: Unicode lowercase or uncased letters and numbers joined by single hyphens, equal to the skill's directory name.",
|
|
12
|
-
"type": "string",
|
|
13
|
-
"pattern": "^(?!.*[\\p{Uppercase}\\p{Lt}])[\\p{L}\\p{N}]+(?:-[\\p{L}\\p{N}]+)*$",
|
|
14
|
-
"maxLength": 64
|
|
15
|
-
},
|
|
16
9
|
"source": {
|
|
17
10
|
"description": "A local skill folder or its SKILL.md (read in place), a Git remote, or an archive (materialized into workspace storage). Required for configured and added skills; omitted only for a host-provided tree.",
|
|
18
11
|
"type": "string",
|
|
@@ -28,5 +21,13 @@
|
|
|
28
21
|
"type": "string",
|
|
29
22
|
"pattern": "^[0-9a-f]{40}(?:[0-9a-f]{24})?$"
|
|
30
23
|
}
|
|
24
|
+
},
|
|
25
|
+
"$defs": {
|
|
26
|
+
"name": {
|
|
27
|
+
"description": "The standard Agent Skills name: Unicode lowercase or uncased letters and numbers joined by single hyphens, equal to the skill's directory name.",
|
|
28
|
+
"type": "string",
|
|
29
|
+
"pattern": "^(?!.{65}|.*[\\p{Uppercase}\\p{Lt}])[\\p{L}\\p{N}]+(?:-[\\p{L}\\p{N}]+)*$",
|
|
30
|
+
"maxLength": 64
|
|
31
|
+
}
|
|
31
32
|
}
|
|
32
33
|
}
|