arkaos 2.69.0 → 2.71.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/VERSION +1 -1
- package/core/cognition/scheduler/__pycache__/daemon.cpython-313.pyc +0 -0
- package/core/cognition/scheduler/daemon.py +37 -1
- package/core/workflow/__pycache__/flow_enforcer.cpython-313.pyc +0 -0
- package/core/workflow/flow_enforcer.py +10 -1
- package/package.json +1 -1
- package/pyproject.toml +1 -1
- package/scripts/__pycache__/marketplace_export.cpython-313.pyc +0 -0
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.
|
|
1
|
+
2.71.0
|
|
Binary file
|
|
@@ -38,6 +38,15 @@ class ScheduleConfig:
|
|
|
38
38
|
timeout_minutes: int = 60
|
|
39
39
|
python_module: str | None = None
|
|
40
40
|
module_args: list[str] = field(default_factory=list)
|
|
41
|
+
# PR54 v2.71.0 — opt-in Claude Code v2.1.139 /goal primitive.
|
|
42
|
+
# When goal_condition is set the scheduler appends
|
|
43
|
+
# `--goal <condition> --task-budget <N>` to the claude argv, so the
|
|
44
|
+
# model keeps running until it decides the condition is met (instead
|
|
45
|
+
# of stopping when the prompt's hardcoded phases run out). NEVER
|
|
46
|
+
# pair --goal without --task-budget — KB caveat: sharp edges around
|
|
47
|
+
# the model overcommitting to ambiguous goals (infinite-loop risk).
|
|
48
|
+
goal_condition: str | None = None
|
|
49
|
+
task_budget: int | None = None
|
|
41
50
|
|
|
42
51
|
@classmethod
|
|
43
52
|
def load(cls, config_path: str) -> "list[ScheduleConfig]":
|
|
@@ -62,6 +71,8 @@ class ScheduleConfig:
|
|
|
62
71
|
timeout_minutes=cfg.get("timeout_minutes", 60),
|
|
63
72
|
python_module=cfg.get("python_module"),
|
|
64
73
|
module_args=list(cfg.get("module_args") or []),
|
|
74
|
+
goal_condition=cfg.get("goal_condition"),
|
|
75
|
+
task_budget=cfg.get("task_budget"),
|
|
65
76
|
)
|
|
66
77
|
)
|
|
67
78
|
return schedules
|
|
@@ -170,7 +181,32 @@ class ArkaScheduler:
|
|
|
170
181
|
prompt_content = resolve(prompt_content)
|
|
171
182
|
except Exception:
|
|
172
183
|
pass # fall back to raw template if profile unavailable
|
|
173
|
-
|
|
184
|
+
argv = [claude_bin, "-p", prompt_content, "--dangerously-skip-permissions"]
|
|
185
|
+
argv.extend(self._goal_argv(schedule))
|
|
186
|
+
return argv
|
|
187
|
+
|
|
188
|
+
@staticmethod
|
|
189
|
+
def _goal_argv(schedule: ScheduleConfig) -> list[str]:
|
|
190
|
+
"""Build the --goal/--task-budget argv suffix when configured.
|
|
191
|
+
|
|
192
|
+
Returns an empty list when goal_condition is unset (legacy
|
|
193
|
+
single-shot behaviour). Raises ValueError when --goal is set
|
|
194
|
+
without --task-budget — pairing the two is mandatory per the
|
|
195
|
+
Claude Code v2.1.139 KB caveat (sharp edges around the model
|
|
196
|
+
overcommitting to ambiguous goals → infinite-loop risk).
|
|
197
|
+
"""
|
|
198
|
+
if not schedule.goal_condition:
|
|
199
|
+
return []
|
|
200
|
+
if not schedule.task_budget or schedule.task_budget <= 0:
|
|
201
|
+
raise ValueError(
|
|
202
|
+
f"schedule '{schedule.command}' sets goal_condition without "
|
|
203
|
+
"a positive task_budget — pairing is mandatory to bound the "
|
|
204
|
+
"metered burn (Claude Code v2.1.139 KB caveat)."
|
|
205
|
+
)
|
|
206
|
+
return [
|
|
207
|
+
"--goal", str(schedule.goal_condition),
|
|
208
|
+
"--task-budget", str(int(schedule.task_budget)),
|
|
209
|
+
]
|
|
174
210
|
|
|
175
211
|
@staticmethod
|
|
176
212
|
def _warn_metered_billing_cutover(schedule: ScheduleConfig) -> None:
|
|
Binary file
|
|
@@ -193,7 +193,16 @@ PHASE_RE = re.compile(r"\[arka:phase:\d+\]", re.IGNORECASE)
|
|
|
193
193
|
SAFE_SESSION_ID_RE = _safe_session_id_module.SAFE_SESSION_ID_RE
|
|
194
194
|
_safe_session_id = _safe_session_id_module.safe_session_id
|
|
195
195
|
|
|
196
|
-
|
|
196
|
+
# PR53 v2.70.0 — widened from 6 to 20. The 6-message window was too
|
|
197
|
+
# tight for long multi-PR sessions: after a single PR's worth of test
|
|
198
|
+
# runs / commits / npm publishes (each producing a substantive assistant
|
|
199
|
+
# message), the [arka:routing] line aged out and the enforcer blocked
|
|
200
|
+
# subsequent Edit/Write calls even though the operator was clearly mid-
|
|
201
|
+
# scope. 20 covers ~2-3 PRs of tool work without re-emitting the
|
|
202
|
+
# routing line. Transcript remains the authoritative source per
|
|
203
|
+
# docs/adr/2026-04-17-binding-flow-enforcement.md — this just widens
|
|
204
|
+
# how far back we look before declaring the marker absent.
|
|
205
|
+
ASSISTANT_WINDOW = 20
|
|
197
206
|
CONFIG_PATH = Path.home() / ".arkaos" / "config.json"
|
|
198
207
|
BYPASS_AUDIT_PATH = Path.home() / ".arkaos" / "audit" / "bypass.log"
|
|
199
208
|
TELEMETRY_PATH = Path.home() / ".arkaos" / "telemetry" / "enforcement.jsonl"
|
package/package.json
CHANGED
package/pyproject.toml
CHANGED
|
Binary file
|