agentic-runner-contracts 3.2.0__tar.gz → 3.4.0__tar.gz
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.
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/PKG-INFO +1 -1
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/src/agentic_runner_contracts/__init__.py +1 -1
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/src/agentic_runner_contracts/activity_io.py +28 -0
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/src/agentic_runner_contracts/runner_registration.py +48 -1
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/.gitignore +0 -0
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/LICENSE +0 -0
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/README.md +0 -0
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/pyproject.toml +0 -0
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/src/agentic_runner_contracts/channel_messages.py +0 -0
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/src/agentic_runner_contracts/epics.py +0 -0
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/src/agentic_runner_contracts/github_port.py +0 -0
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/src/agentic_runner_contracts/grants/__init__.py +0 -0
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/src/agentic_runner_contracts/grants/catalogue.py +0 -0
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/src/agentic_runner_contracts/grants/evaluator.py +0 -0
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/src/agentic_runner_contracts/grants/model.py +0 -0
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/src/agentic_runner_contracts/grants/seam.py +0 -0
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/src/agentic_runner_contracts/grants/snapshot.py +0 -0
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/src/agentic_runner_contracts/incidents.py +0 -0
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/src/agentic_runner_contracts/llm_usage.py +0 -0
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/src/agentic_runner_contracts/public_metadata.py +0 -0
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/src/agentic_runner_contracts/py.typed +0 -0
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/src/agentic_runner_contracts/questions.py +0 -0
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/src/agentic_runner_contracts/redaction.py +0 -0
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/src/agentic_runner_contracts/routing.py +0 -0
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/src/agentic_runner_contracts/runner_signature.py +0 -0
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/src/agentic_runner_contracts/runtime_context.py +0 -0
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/src/agentic_runner_contracts/sealed_credential.py +0 -0
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/src/agentic_runner_contracts/swarm.py +0 -0
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/src/agentic_runner_contracts/triage.py +0 -0
- {agentic_runner_contracts-3.2.0 → agentic_runner_contracts-3.4.0}/src/agentic_runner_contracts/user_sources.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: agentic-runner-contracts
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.4.0
|
|
4
4
|
Summary: Activity I/O contracts and Public Metadata name builders shared by the Agentic OS platform and the installable Runner
|
|
5
5
|
License-Expression: AGPL-3.0-only
|
|
6
6
|
License-File: LICENSE
|
|
@@ -32,6 +32,6 @@ the package the floor is *about*, and read back through ``agentic-runner --versi
|
|
|
32
32
|
# Additive; an older payload parses with no Skills. But the context forbids extra keys,
|
|
33
33
|
# so a Runner one minor behind refuses a context that carries `skills` -- the platform
|
|
34
34
|
# must not send the field until its Runners are on 2.7.
|
|
35
|
-
__version__ = "3.
|
|
35
|
+
__version__ = "3.4.0"
|
|
36
36
|
|
|
37
37
|
__all__ = ["__version__"]
|
|
@@ -175,6 +175,29 @@ class QuestionAsked:
|
|
|
175
175
|
owner_confirmation: OwnerConfirmationPending | None = None
|
|
176
176
|
|
|
177
177
|
|
|
178
|
+
class HarnessHoldKind(StrEnum):
|
|
179
|
+
"""Why a subscription-mode harness stopped on its person's account (local-agents 08)."""
|
|
180
|
+
|
|
181
|
+
# The plan's usage window is spent; the harness may say when it resets.
|
|
182
|
+
USAGE_LIMIT = "usage_limit"
|
|
183
|
+
# The sign-in expired, was revoked, or is absent: only the person can sign in again.
|
|
184
|
+
SIGN_IN_REQUIRED = "sign_in_required"
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
@dataclass(frozen=True)
|
|
188
|
+
class HarnessHold:
|
|
189
|
+
"""A subscription Directive stopped for a reason a retry cannot fix (local-agents 08).
|
|
190
|
+
|
|
191
|
+
Returned instead of raised, with nothing pushed, so the loop can hold rather than
|
|
192
|
+
spend a fix Directive and Budget on it (issue 09). ``retry_not_before`` is ISO 8601
|
|
193
|
+
UTC text -- the same reason ``ContractDeviceLoginResult.expires_at`` is -- and None
|
|
194
|
+
when the harness named no reset time.
|
|
195
|
+
"""
|
|
196
|
+
|
|
197
|
+
kind: HarnessHoldKind
|
|
198
|
+
retry_not_before: str | None = None
|
|
199
|
+
|
|
200
|
+
|
|
178
201
|
@dataclass(frozen=True)
|
|
179
202
|
class QuestionOpenInput:
|
|
180
203
|
"""Route an allowed Question and start its 24 h window (PRD issue 60)."""
|
|
@@ -328,6 +351,8 @@ class BranchPullRequestOutput:
|
|
|
328
351
|
plan: EpicPlan | None = None
|
|
329
352
|
# PRD issue 60: the Question this Directive's Agent asked over its callback socket.
|
|
330
353
|
question: QuestionAsked | None = None
|
|
354
|
+
# Local-agents 08: the subscription harness hit its usage limit or lost its sign-in.
|
|
355
|
+
harness_hold: HarnessHold | None = None
|
|
331
356
|
|
|
332
357
|
|
|
333
358
|
@dataclass(frozen=True)
|
|
@@ -649,6 +674,8 @@ class FixDirectiveOutput:
|
|
|
649
674
|
plan: EpicPlan | None = None
|
|
650
675
|
# PRD issue 60: the Question this Directive's Agent asked over its callback socket.
|
|
651
676
|
question: QuestionAsked | None = None
|
|
677
|
+
# Local-agents 08: the subscription harness hit its usage limit or lost its sign-in.
|
|
678
|
+
harness_hold: HarnessHold | None = None
|
|
652
679
|
|
|
653
680
|
|
|
654
681
|
@dataclass(frozen=True)
|
|
@@ -1032,6 +1059,7 @@ class LearningDirectiveOutput:
|
|
|
1032
1059
|
usage: DirectiveUsage = field(default_factory=DirectiveUsage)
|
|
1033
1060
|
outcome: str = LEARNING_PROPOSED
|
|
1034
1061
|
summary: str = ""
|
|
1062
|
+
harness_hold: HarnessHold | None = None
|
|
1035
1063
|
|
|
1036
1064
|
|
|
1037
1065
|
@dataclass(frozen=True)
|
|
@@ -223,8 +223,36 @@ class BootstrapResponse(BaseModel):
|
|
|
223
223
|
stale_after_seconds: int = int(HEARTBEAT_STALE_AFTER.total_seconds())
|
|
224
224
|
|
|
225
225
|
|
|
226
|
+
class SelfTestFailure(StrEnum):
|
|
227
|
+
"""Why a harness's ``--version`` under a Contract's uid did not answer (local-agents 17)."""
|
|
228
|
+
|
|
229
|
+
NOT_FOUND = "not_found"
|
|
230
|
+
BELOW_FLOOR = "below_floor"
|
|
231
|
+
SPAWN_FAILED = "spawn_failed"
|
|
232
|
+
TIMEOUT = "timeout"
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
class HarnessSelfTest(BaseModel):
|
|
236
|
+
"""The last ``--version`` run as the Contract would run it: a result, never its output."""
|
|
237
|
+
|
|
238
|
+
model_config = ConfigDict(extra="forbid")
|
|
239
|
+
|
|
240
|
+
ok: bool
|
|
241
|
+
at: datetime
|
|
242
|
+
reason: SelfTestFailure | None = None
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
_HARNESS_DESCRIPTOR_FIELDS: Final = ("auth_modes", "permission_mode", "self_test")
|
|
246
|
+
|
|
247
|
+
|
|
226
248
|
class HarnessVersion(BaseModel):
|
|
227
|
-
"""One CLI as it stands under one Contract root (ADR-0015 §4, 23 item 5).
|
|
249
|
+
"""One CLI as it stands under one Contract root (ADR-0015 §4, 23 item 5).
|
|
250
|
+
|
|
251
|
+
``auth_modes``, ``permission_mode`` and ``self_test`` are the runtime's descriptor
|
|
252
|
+
(local-agents 17), self-reported like everything else here. The permission mode is
|
|
253
|
+
what the Runner passes the harness, reported and never trusted as a gate (ADR-0011
|
|
254
|
+
§12).
|
|
255
|
+
"""
|
|
228
256
|
|
|
229
257
|
model_config = ConfigDict(extra="forbid")
|
|
230
258
|
|
|
@@ -232,6 +260,25 @@ class HarnessVersion(BaseModel):
|
|
|
232
260
|
cli_kind: Annotated[str, StringConstraints(pattern=r"^[a-z][a-z0-9_]{0,31}$")]
|
|
233
261
|
version: Annotated[str, StringConstraints(max_length=64)]
|
|
234
262
|
auth_mode: Annotated[str, StringConstraints(pattern=r"^[a-z][a-z0-9_]{0,31}$")]
|
|
263
|
+
auth_modes: (
|
|
264
|
+
list[Annotated[str, StringConstraints(pattern=r"^[a-z][a-z0-9_]{0,31}$")]] | None
|
|
265
|
+
) = Field(default=None, max_length=8)
|
|
266
|
+
permission_mode: (
|
|
267
|
+
Annotated[str, StringConstraints(pattern=r"^[a-z][a-z0-9_=;.-]{0,95}$")] | None
|
|
268
|
+
) = None
|
|
269
|
+
self_test: HarnessSelfTest | None = None
|
|
270
|
+
|
|
271
|
+
@model_serializer(mode="wrap")
|
|
272
|
+
def _omit_absent_descriptor(self, handler: SerializerFunctionWrapHandler) -> Any:
|
|
273
|
+
# A control plane on contracts 3.3 forbids extra keys, so a row without the
|
|
274
|
+
# descriptor is the body it already parses. One with it needs the control plane
|
|
275
|
+
# on this minor first -- upgrade the control plane before the Runner.
|
|
276
|
+
body = handler(self)
|
|
277
|
+
if isinstance(body, dict):
|
|
278
|
+
for name in _HARNESS_DESCRIPTOR_FIELDS:
|
|
279
|
+
if body.get(name) is None:
|
|
280
|
+
body.pop(name, None)
|
|
281
|
+
return body
|
|
235
282
|
|
|
236
283
|
|
|
237
284
|
class ResourcePressure(BaseModel):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|