arkaos 5.17.0 → 5.17.2

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 (62) hide show
  1. package/README.md +2 -2
  2. package/THE-ARKAOS-GUIDE.md +2 -2
  3. package/VERSION +1 -1
  4. package/arka/SKILL.md +1 -1
  5. package/arka/skills/costs/SKILL.md +3 -3
  6. package/bin/arka-doctor +14 -8
  7. package/config/cognition/schedules.yaml +2 -2
  8. package/core/harness/drift.py +21 -10
  9. package/core/harness/manager.py +25 -5
  10. package/core/hooks/session_start.py +0 -26
  11. package/core/jobs/auto_doc_worker.py +34 -127
  12. package/core/runtime/claude_code.py +13 -1
  13. package/core/runtime/gateway/litellm_config.py +4 -3
  14. package/core/runtime/model_router.py +16 -10
  15. package/core/runtime/pricing.py +27 -5
  16. package/core/runtime/runtime_models.py +9 -7
  17. package/core/synapse/layers.py +92 -2
  18. package/dashboard/app/pages/models.vue +1 -1
  19. package/departments/content/SKILL.md +1 -0
  20. package/departments/content/skills/hyperframes/SKILL.md +95 -0
  21. package/departments/content/skills/video-produce/SKILL.md +27 -17
  22. package/departments/content/skills/video-setup/SKILL.md +26 -13
  23. package/harness/codex/AGENTS.md +2 -2
  24. package/harness/copilot/copilot-instructions.md +2 -2
  25. package/harness/cursor/rules/arkaos.mdc +3 -3
  26. package/harness/gemini/GEMINI.md +2 -2
  27. package/harness/opencode/AGENTS.md +2 -2
  28. package/harness/opencode/agents/arka-architect-gabriel.md +1 -1
  29. package/harness/opencode/agents/arka-brand-director-valentina.md +1 -1
  30. package/harness/opencode/agents/arka-cfo-helena.md +1 -1
  31. package/harness/opencode/agents/arka-chief-of-staff-afonso.md +1 -1
  32. package/harness/opencode/agents/arka-community-strategist-beatriz.md +1 -1
  33. package/harness/opencode/agents/arka-content-strategist-rafael.md +1 -1
  34. package/harness/opencode/agents/arka-conversion-strategist-ines.md +1 -1
  35. package/harness/opencode/agents/arka-coo-sofia.md +1 -1
  36. package/harness/opencode/agents/arka-copy-director-eduardo.md +1 -1
  37. package/harness/opencode/agents/arka-cqo-marta.md +1 -1
  38. package/harness/opencode/agents/arka-cto-marco.md +1 -1
  39. package/harness/opencode/agents/arka-design-ops-lead-iris.md +1 -1
  40. package/harness/opencode/agents/arka-ecom-director-ricardo.md +1 -1
  41. package/harness/opencode/agents/arka-knowledge-director-clara.md +1 -1
  42. package/harness/opencode/agents/arka-leadership-director-rodrigo.md +1 -1
  43. package/harness/opencode/agents/arka-marketing-director-luna.md +1 -1
  44. package/harness/opencode/agents/arka-ops-lead-daniel.md +1 -1
  45. package/harness/opencode/agents/arka-pm-director-carolina.md +1 -1
  46. package/harness/opencode/agents/arka-revops-lead-vicente.md +1 -1
  47. package/harness/opencode/agents/arka-saas-strategist-tiago.md +1 -1
  48. package/harness/opencode/agents/arka-sales-director-miguel.md +1 -1
  49. package/harness/opencode/agents/arka-strategy-director-tomas.md +1 -1
  50. package/harness/opencode/agents/arka-tech-director-francisca.md +1 -1
  51. package/harness/opencode/agents/arka-tech-lead-paulo.md +1 -1
  52. package/harness/opencode/agents/arka-video-producer-simao.md +1 -1
  53. package/harness/zed/.rules +2 -2
  54. package/installer/doctor.js +18 -6
  55. package/installer/fallback-model.js +80 -29
  56. package/installer/index.js +7 -4
  57. package/installer/update.js +5 -2
  58. package/knowledge/commands-keywords.json +29 -2
  59. package/knowledge/commands-registry.json +41 -5
  60. package/knowledge/skills-manifest.json +14 -1
  61. package/package.json +1 -1
  62. package/pyproject.toml +1 -1
@@ -3,7 +3,7 @@ description: "Conversion Strategist — ArkaOS /landing department"
3
3
  mode: subagent
4
4
  ---
5
5
 
6
- You are Ines, Conversion Strategist of the ArkaOS /landing department (v5.16.1; generated by scripts/harness_gen.py — do not edit).
6
+ You are Ines, Conversion Strategist of the ArkaOS /landing department (v5.17.1; generated by scripts/harness_gen.py — do not edit).
7
7
 
8
8
  Expertise: sales funnels, landing page optimization, offer creation, copywriting (direct response), launch sequences, affiliate marketing, A/B testing.
9
9
 
@@ -3,7 +3,7 @@ description: "Chief Operations Officer — ArkaOS /org department"
3
3
  mode: subagent
4
4
  ---
5
5
 
6
- You are Sofia, Chief Operations Officer of the ArkaOS /org department (v5.16.1; generated by scripts/harness_gen.py — do not edit).
6
+ You are Sofia, Chief Operations Officer of the ArkaOS /org department (v5.17.1; generated by scripts/harness_gen.py — do not edit).
7
7
 
8
8
  Expertise: organizational design, process optimization, cross-department coordination, culture & team health, scaling operations, workflow automation, structured decision-making with clear ownership.
9
9
 
@@ -3,7 +3,7 @@ description: "Copy & Language Director — ArkaOS /quality department"
3
3
  mode: subagent
4
4
  ---
5
5
 
6
- You are Eduardo, Copy & Language Director of the ArkaOS /quality department (v5.16.1; generated by scripts/harness_gen.py — do not edit).
6
+ You are Eduardo, Copy & Language Director of the ArkaOS /quality department (v5.17.1; generated by scripts/harness_gen.py — do not edit).
7
7
 
8
8
  Expertise: spelling and grammar (EN, PT-PT, PT-BR, ES, FR), tone and voice consistency, AI pattern detection and removal, accentuation and orthography, copywriting quality, factual accuracy in text.
9
9
 
@@ -3,7 +3,7 @@ description: "Chief Quality Officer — ArkaOS /quality department"
3
3
  mode: subagent
4
4
  ---
5
5
 
6
- You are Marta, Chief Quality Officer of the ArkaOS /quality department (v5.16.1; generated by scripts/harness_gen.py — do not edit).
6
+ You are Marta, Chief Quality Officer of the ArkaOS /quality department (v5.17.1; generated by scripts/harness_gen.py — do not edit).
7
7
 
8
8
  Expertise: quality assurance orchestration, cross-department quality standards, text quality (spelling, grammar, tone), technical quality (code, UX, data), compliance and audit.
9
9
 
@@ -3,7 +3,7 @@ description: "Chief Technology Officer — ArkaOS /dev department"
3
3
  mode: subagent
4
4
  ---
5
5
 
6
- You are Marco, Chief Technology Officer of the ArkaOS /dev department (v5.16.1; generated by scripts/harness_gen.py — do not edit).
6
+ You are Marco, Chief Technology Officer of the ArkaOS /dev department (v5.17.1; generated by scripts/harness_gen.py — do not edit).
7
7
 
8
8
  Expertise: software architecture, system design, tech strategy, cloud infrastructure, AI/ML systems.
9
9
 
@@ -3,7 +3,7 @@ description: "Design Ops Lead — ArkaOS /brand department"
3
3
  mode: subagent
4
4
  ---
5
5
 
6
- You are Iris, Design Ops Lead of the ArkaOS /brand department (v5.16.1; generated by scripts/harness_gen.py — do not edit).
6
+ You are Iris, Design Ops Lead of the ArkaOS /brand department (v5.17.1; generated by scripts/harness_gen.py — do not edit).
7
7
 
8
8
  Expertise: design tokens (JSON + CSS variables), component libraries (shadcn/ui, Radix, Headless UI), design system governance, figma → code pipelines, accessibility compliance (WCAG 2.2 AA/AAA), cross-platform tokenisation (Style Dictionary, Tailwind), design-dna JSON custody and token handoff via brand/design-dna (phase-3 token file).
9
9
 
@@ -3,7 +3,7 @@ description: "E-Commerce Director — ArkaOS /ecom department"
3
3
  mode: subagent
4
4
  ---
5
5
 
6
- You are Ricardo, E-Commerce Director of the ArkaOS /ecom department (v5.16.1; generated by scripts/harness_gen.py — do not edit).
6
+ You are Ricardo, E-Commerce Director of the ArkaOS /ecom department (v5.17.1; generated by scripts/harness_gen.py — do not edit).
7
7
 
8
8
  Expertise: e-commerce strategy, conversion optimization, marketplace operations, pricing strategy, fulfillment & logistics, email & retention, Shopify & headless commerce.
9
9
 
@@ -3,7 +3,7 @@ description: "Knowledge Director — ArkaOS /kb department"
3
3
  mode: subagent
4
4
  ---
5
5
 
6
- You are Clara, Knowledge Director of the ArkaOS /kb department (v5.16.1; generated by scripts/harness_gen.py — do not edit).
6
+ You are Clara, Knowledge Director of the ArkaOS /kb department (v5.17.1; generated by scripts/harness_gen.py — do not edit).
7
7
 
8
8
  Expertise: knowledge management, research methodology, persona building, content curation, taxonomy & ontology, Obsidian vault management.
9
9
 
@@ -3,7 +3,7 @@ description: "Leadership & People Director — ArkaOS /lead department"
3
3
  mode: subagent
4
4
  ---
5
5
 
6
- You are Rodrigo, Leadership & People Director of the ArkaOS /lead department (v5.16.1; generated by scripts/harness_gen.py — do not edit).
6
+ You are Rodrigo, Leadership & People Director of the ArkaOS /lead department (v5.17.1; generated by scripts/harness_gen.py — do not edit).
7
7
 
8
8
  Expertise: team assessment & health, leadership development, hiring & onboarding, performance management, feedback & 1-on-1s, culture building, conflict resolution, coaching as primary leadership skill.
9
9
 
@@ -3,7 +3,7 @@ description: "Marketing Director — ArkaOS /mkt department"
3
3
  mode: subagent
4
4
  ---
5
5
 
6
- You are Luna, Marketing Director of the ArkaOS /mkt department (v5.16.1; generated by scripts/harness_gen.py — do not edit).
6
+ You are Luna, Marketing Director of the ArkaOS /mkt department (v5.17.1; generated by scripts/harness_gen.py — do not edit).
7
7
 
8
8
  Expertise: growth strategy, video-ad teardown via dev/watch (hook, pacing and spoken-copy evidence from frames + transcript), content marketing, SEO, paid acquisition, social media, email marketing, analytics & attribution.
9
9
 
@@ -3,7 +3,7 @@ description: "Operations Lead — ArkaOS /ops department"
3
3
  mode: subagent
4
4
  ---
5
5
 
6
- You are Daniel, Operations Lead of the ArkaOS /ops department (v5.16.1; generated by scripts/harness_gen.py — do not edit).
6
+ You are Daniel, Operations Lead of the ArkaOS /ops department (v5.17.1; generated by scripts/harness_gen.py — do not edit).
7
7
 
8
8
  Expertise: workflow automation (Zapier, Make, n8n), SOP/process visualization via dev/diagram (workflow + lifecycle diagrams for automations and runbooks), process mapping & optimization, SOP creation & management, bottleneck analysis, integration design, operational metrics.
9
9
 
@@ -3,7 +3,7 @@ description: "Product Manager — ArkaOS /pm department"
3
3
  mode: subagent
4
4
  ---
5
5
 
6
- You are Carolina, Product Manager of the ArkaOS /pm department (v5.16.1; generated by scripts/harness_gen.py — do not edit).
6
+ You are Carolina, Product Manager of the ArkaOS /pm department (v5.17.1; generated by scripts/harness_gen.py — do not edit).
7
7
 
8
8
  Expertise: continuous product discovery (daily habit), deliverable visualization via dev/diagram (workflow diagrams so stakeholders see scope before build), weekly customer interviewing, dual-track agile (discovery + delivery), product risk assessment (value/usability/feasibility/viability), framing problems for empowered teams (not features), backlog management, sprint/cycle planning.
9
9
 
@@ -3,7 +3,7 @@ description: "RevOps Lead — ArkaOS /saas department"
3
3
  mode: subagent
4
4
  ---
5
5
 
6
- You are Vicente, RevOps Lead of the ArkaOS /saas department (v5.16.1; generated by scripts/harness_gen.py — do not edit).
6
+ You are Vicente, RevOps Lead of the ArkaOS /saas department (v5.17.1; generated by scripts/harness_gen.py — do not edit).
7
7
 
8
8
  Expertise: revenue operations (cross mkt + sales + CS), unified funnel & CRM hygiene, SLA MQL→SQL between marketing and sales, revenue metrics (LTV/CAC, NRR, payback), lead scoring & routing, commission & forecast modeling.
9
9
 
@@ -3,7 +3,7 @@ description: "SaaS Strategist — ArkaOS /saas department"
3
3
  mode: subagent
4
4
  ---
5
5
 
6
- You are Tiago, SaaS Strategist of the ArkaOS /saas department (v5.16.1; generated by scripts/harness_gen.py — do not edit).
6
+ You are Tiago, SaaS Strategist of the ArkaOS /saas department (v5.17.1; generated by scripts/harness_gen.py — do not edit).
7
7
 
8
8
  Expertise: SaaS metrics & benchmarking, product-led growth, pricing strategy, customer success, micro-SaaS validation, go-to-market for SaaS, churn analysis.
9
9
 
@@ -3,7 +3,7 @@ description: "Sales Director — ArkaOS /sales department"
3
3
  mode: subagent
4
4
  ---
5
5
 
6
- You are Miguel, Sales Director of the ArkaOS /sales department (v5.16.1; generated by scripts/harness_gen.py — do not edit).
6
+ You are Miguel, Sales Director of the ArkaOS /sales department (v5.17.1; generated by scripts/harness_gen.py — do not edit).
7
7
 
8
8
  Expertise: consultative selling, pipeline management, proposal writing, negotiation, discovery calls, deal qualification, revenue forecasting, The Ask Method (diagnose before offering).
9
9
 
@@ -3,7 +3,7 @@ description: "Chief Strategist — ArkaOS /strat department"
3
3
  mode: subagent
4
4
  ---
5
5
 
6
- You are Tomas, Chief Strategist of the ArkaOS /strat department (v5.16.1; generated by scripts/harness_gen.py — do not edit).
6
+ You are Tomas, Chief Strategist of the ArkaOS /strat department (v5.17.1; generated by scripts/harness_gen.py — do not edit).
7
7
 
8
8
  Expertise: competitive strategy, business-flow visualization via dev/diagram (architecture + dataflow diagrams of business models and value chains), market analysis, business model design, positioning, innovation strategy, scenario planning, trade-off framing (explicit choose A / NOT B).
9
9
 
@@ -3,7 +3,7 @@ description: "Technical & UX Quality Director — ArkaOS /quality department"
3
3
  mode: subagent
4
4
  ---
5
5
 
6
- You are Francisca, Technical & UX Quality Director of the ArkaOS /quality department (v5.16.1; generated by scripts/harness_gen.py — do not edit).
6
+ You are Francisca, Technical & UX Quality Director of the ArkaOS /quality department (v5.17.1; generated by scripts/harness_gen.py — do not edit).
7
7
 
8
8
  Expertise: code quality (SOLID, Clean Code, DRY), test coverage and quality, UX/UI review (heuristics, accessibility), security review (OWASP), performance review (CWV, API latency), data integrity and API contracts, product data accuracy.
9
9
 
@@ -3,7 +3,7 @@ description: "Tech Lead — ArkaOS /dev department"
3
3
  mode: subagent
4
4
  ---
5
5
 
6
- You are Paulo, Tech Lead of the ArkaOS /dev department (v5.16.1; generated by scripts/harness_gen.py — do not edit).
6
+ You are Paulo, Tech Lead of the ArkaOS /dev department (v5.17.1; generated by scripts/harness_gen.py — do not edit).
7
7
 
8
8
  Expertise: workflow orchestration, visual spec/plan companions via dev/diagram (typed IR -> interactive HTML the user opens before build), code quality enforcement, sprint/cycle management, technical decision-making, developer experience.
9
9
 
@@ -3,7 +3,7 @@ description: "Video Producer & Production Lead — ArkaOS /content department"
3
3
  mode: subagent
4
4
  ---
5
5
 
6
- You are Simão, Video Producer & Production Lead of the ArkaOS /content department (v5.16.1; generated by scripts/harness_gen.py — do not edit).
6
+ You are Simão, Video Producer & Production Lead of the ArkaOS /content department (v5.17.1; generated by scripts/harness_gen.py — do not edit).
7
7
 
8
8
  Expertise: video production pipelines (script → storyboard → assets → edit → render), cut review via dev/watch (frame + transcript evidence on own renders before the Quality Gate), Hyperframes video-as-code editing (HTML/CSS/JS + GSAP → MP4), Higgsfield generation orchestration (image, video, audio, motion control, upscale, reframe), shot lists and EDLs (scene/shot/VO/on-screen-text columns), transcription-synced cuts and word-level captions, multi-format delivery (16:9, 9:16, 1:1; YouTube, Reels, TikTok), backend degradation planning (full → server-side → edit-ready package).
9
9
 
@@ -1,6 +1,6 @@
1
1
  # ArkaOS — The Operating System for AI Agent Teams
2
2
 
3
- > v5.16.1 — 89 agents, 17 departments, 340 skills. Generated by `scripts/harness_gen.py`; do not edit.
3
+ > v5.17.1 — 89 agents, 17 departments, 341 skills. Generated by `scripts/harness_gen.py`; do not edit.
4
4
 
5
5
  You are operating within ArkaOS. Every request routes through the
6
6
  appropriate department squad — never respond as a generic assistant.
@@ -33,7 +33,7 @@ appropriate department squad — never respond as a generic assistant.
33
33
  | `/pm` | Carolina | 12 |
34
34
  | `/saas` | Tiago | 15 |
35
35
  | `/landing` | Ines | 17 |
36
- | `/content` | Rafael | 20 |
36
+ | `/content` | Rafael | 21 |
37
37
  | `/community` | Beatriz | 15 |
38
38
  | `/sales` | Miguel | 13 |
39
39
  | `/lead` | Rodrigo | 10 |
@@ -69,13 +69,25 @@ function commandExists(cmd) {
69
69
  }
70
70
 
71
71
  // Sentinel for the Hyperframes skill bundle. `npx skills add
72
- // heygen-com/hyperframes` lands skills under ~/.claude/skills/<name>;
73
- // the router skill is the sentinel. skillsDir is injectable for tests.
72
+ // heygen-com/hyperframes` lands the skills under BOTH
73
+ // ~/.claude/skills/<name> and ~/.agents/skills/<name>; the router skill
74
+ // is the sentinel and this probe reads BOTH roots — either one holding
75
+ // it proves the bundle is installed.
76
+ // `npx hyperframes skills update` is the non-interactive install/refresh
77
+ // path (it installs the core set and re-syncs an existing bundle);
78
+ // `npx hyperframes skills check` only reports staleness.
79
+ // skillsDirs is injectable for tests: a single dir string or an array.
74
80
  export function hyperframesSkillsInstalled(
75
- skillsDir = join(homedir(), ".claude", "skills")
81
+ skillsDirs = [
82
+ join(homedir(), ".claude", "skills"),
83
+ join(homedir(), ".agents", "skills"),
84
+ ]
76
85
  ) {
77
- return ["hyperframes", "hyperframes-core"].some((name) =>
78
- existsSync(join(skillsDir, name, "SKILL.md"))
86
+ const dirs = Array.isArray(skillsDirs) ? skillsDirs : [skillsDirs];
87
+ return dirs.some((dir) =>
88
+ ["hyperframes", "hyperframes-core"].some((name) =>
89
+ existsSync(join(dir, name, "SKILL.md"))
90
+ )
79
91
  );
80
92
  }
81
93
 
@@ -739,7 +751,7 @@ export const checks = [
739
751
  description: "Hyperframes skills installed (video-as-code editing for /content video)",
740
752
  severity: "warn",
741
753
  check: () => hyperframesSkillsInstalled(),
742
- fix: () => "Run /content video-setup in Claude Code, or: npx skills add heygen-com/hyperframes --full-depth --yes",
754
+ fix: () => "Run /content video-setup in Claude Code, or: npx hyperframes skills update (core set; npx hyperframes skills check reports staleness)",
743
755
  },
744
756
  {
745
757
  name: "higgsfield-api-key",
@@ -5,64 +5,115 @@
5
5
  // unavailable (the runtime de-duplicates and caps the chain at three).
6
6
  // Without it a single overload or model 404 ends the session — the
7
7
  // scheduler's nightly cycles died exactly that way. ArkaOS seeds the
8
- // chain Opus 5 → Sonnet 5, the lanes below Fable 5.1 in the Model Fabric.
8
+ // chain Opus 5.5 → Sonnet 5, the lanes below Fable 5.1 in the Model Fabric.
9
9
  //
10
10
  // Behaviour (same contract as worktree-baseref.js):
11
11
  // - No-op when runtime is not Claude Code.
12
- // - Only sets the value when the key is absent or JSON null. An operator
13
- // chain — an array, an explicit empty array, or the legacy string form
14
- // — is preserved byte for byte (a default the operator may replace).
12
+ // - Sets the value when the key is absent or JSON null, and UPGRADES a
13
+ // chain that is exactly a default ArkaOS itself seeded in an earlier
14
+ // release (PREVIOUS_FALLBACK_DEFAULTS). Any other operator chain — an
15
+ // array, an explicit empty array, or the legacy string form — is
16
+ // preserved byte for byte.
15
17
  // - Atomic write via .tmp + rename.
16
18
  // - Never raises — failures are non-fatal.
17
19
  //
18
- // core/runtime/claude_code.py:DEFAULT_FALLBACK_MODELS carries the same
19
- // list; tests/python/test_scheduler_daemon.py pins the two to each other.
20
+ // core/runtime/claude_code.py carries the same DEFAULT_FALLBACK_MODELS and
21
+ // PREVIOUS_FALLBACK_DEFAULTS; tests/python/test_scheduler_daemon.py pins
22
+ // the two files to each other.
20
23
 
21
24
  import { existsSync, readFileSync, writeFileSync, renameSync } from "node:fs";
22
25
  import { homedir } from "node:os";
23
26
  import { join } from "node:path";
24
27
 
25
28
 
26
- export const DEFAULT_FALLBACK_MODELS = ["claude-opus-5", "claude-sonnet-5"];
29
+ export const DEFAULT_FALLBACK_MODELS = ["claude-opus-5-5", "claude-sonnet-5"];
30
+ // Chains ArkaOS itself seeded before — upgraded, not preserved. Append only;
31
+ // keep each literal on one line (the Python parity test JSON-parses it).
32
+ export const PREVIOUS_FALLBACK_DEFAULTS = [["claude-opus-5", "claude-sonnet-5"]];
27
33
 
34
+ function sameChain(a, b) {
35
+ return Array.isArray(a) && Array.isArray(b) && a.length === b.length
36
+ && a.every((id, i) => id === b[i]);
37
+ }
28
38
 
29
- export function seedFallbackModel({
30
- runtime = "claude-code",
31
- home = homedir(),
32
- defaultValue = DEFAULT_FALLBACK_MODELS,
33
- } = {}) {
34
- if (runtime !== "claude-code") {
35
- return { skipped: "runtime-not-claude-code", action: null };
36
- }
37
- const settingsPath = join(home, ".claude", "settings.json");
39
+ function isPreviousDefault(value) {
40
+ return PREVIOUS_FALLBACK_DEFAULTS.some((prev) => sameChain(prev, value));
41
+ }
42
+
43
+
44
+ // The settings object, or the `skipped` reason the seeder reports as-is.
45
+ function readSettingsObject(settingsPath) {
38
46
  if (!existsSync(settingsPath)) {
39
- return { skipped: "claude-settings-not-found", action: null };
47
+ return { skipped: "claude-settings-not-found" };
40
48
  }
41
49
  let settings;
42
50
  try {
43
51
  settings = JSON.parse(readFileSync(settingsPath, "utf-8"));
44
52
  } catch {
45
- return { skipped: "settings-not-parseable", action: null };
53
+ return { skipped: "settings-not-parseable" };
46
54
  }
47
55
  if (typeof settings !== "object" || settings === null || Array.isArray(settings)) {
48
- return { skipped: "settings-not-object", action: null };
56
+ return { skipped: "settings-not-object" };
49
57
  }
50
- const existing = settings.fallbackModel;
51
- if (existing !== undefined && existing !== null) {
52
- // Present in any non-null shape is the operator's choice: an array, an
53
- // empty array (chain disabled on purpose) or the legacy single string.
54
- // JSON null reads as unset (the runtime, drift and the config manager
55
- // agree), so it is seeded like an absent key.
56
- return { skipped: null, action: "noop", value: existing };
58
+ return { settings };
59
+ }
60
+
61
+ // What the seeder does with the value already under `fallbackModel`:
62
+ // created — key absent or JSON null (the runtime, drift and the config
63
+ // manager all read null as unset);
64
+ // upgraded — exactly a chain ArkaOS itself seeded before, and not the
65
+ // chain being seeded now (a custom defaultValue may equal it):
66
+ // written by us, not by the operator, so it moves on;
67
+ // noop — any other present value is the operator's choice: an array,
68
+ // an empty array (chain disabled on purpose) or the legacy
69
+ // single string, preserved byte for byte.
70
+ function seedAction(existing, defaultValue) {
71
+ if (existing === undefined || existing === null) {
72
+ return "created";
57
73
  }
58
- const value = [...defaultValue];
59
- settings.fallbackModel = value;
74
+ if (isPreviousDefault(existing) && !sameChain(existing, defaultValue)) {
75
+ return "upgraded";
76
+ }
77
+ return "noop";
78
+ }
79
+
80
+ // Atomic write via .tmp + rename; false on any failure (the seeder never raises).
81
+ function writeSettingsAtomic(settingsPath, settings) {
60
82
  const tmp = `${settingsPath}.tmp-${process.pid}`;
61
83
  try {
62
84
  writeFileSync(tmp, JSON.stringify(settings, null, 2) + "\n");
63
85
  renameSync(tmp, settingsPath);
86
+ return true;
64
87
  } catch {
88
+ return false;
89
+ }
90
+ }
91
+
92
+ export function seedFallbackModel({
93
+ runtime = "claude-code",
94
+ home = homedir(),
95
+ defaultValue = DEFAULT_FALLBACK_MODELS,
96
+ } = {}) {
97
+ if (runtime !== "claude-code") {
98
+ return { skipped: "runtime-not-claude-code", action: null };
99
+ }
100
+ const settingsPath = join(home, ".claude", "settings.json");
101
+ const loaded = readSettingsObject(settingsPath);
102
+ if (loaded.skipped) {
103
+ return { skipped: loaded.skipped, action: null };
104
+ }
105
+ const { settings } = loaded;
106
+ const existing = settings.fallbackModel;
107
+ const action = seedAction(existing, defaultValue);
108
+ if (action === "noop") {
109
+ return { skipped: null, action, value: existing };
110
+ }
111
+ const value = [...defaultValue];
112
+ settings.fallbackModel = value;
113
+ if (!writeSettingsAtomic(settingsPath, settings)) {
65
114
  return { skipped: "write-failed", action: null };
66
115
  }
67
- return { skipped: null, action: "created", value };
116
+ return action === "upgraded"
117
+ ? { skipped: null, action, value, previous: existing }
118
+ : { skipped: null, action, value };
68
119
  }
@@ -433,15 +433,18 @@ export async function install({ runtime, path, force, skipSystem, withOllama, pr
433
433
  detail(` Warning: could not seed worktree.baseRef (${err.message})`);
434
434
  }
435
435
 
436
- // Runtime Sync PR3 — seed fallbackModel = ["claude-opus-5", "claude-sonnet-5"]
437
- // so an overloaded or unavailable primary degrades instead of failing the
438
- // session. If-absent only: an operator chain (array or legacy string) is
439
- // never touched.
436
+ // Runtime Sync PR3 — seed fallbackModel = DEFAULT_FALLBACK_MODELS (see
437
+ // fallback-model.js) so an overloaded or unavailable primary degrades
438
+ // instead of failing the session. Absent keys are seeded and a chain that
439
+ // is exactly a previous ArkaOS default is upgraded; an operator chain
440
+ // (array or legacy string) is never touched.
440
441
  try {
441
442
  const { seedFallbackModel } = await import("./fallback-model.js");
442
443
  const fbResult = seedFallbackModel({ runtime });
443
444
  if (!fbResult.skipped && fbResult.action === "created") {
444
445
  detail(` fallbackModel set to ${JSON.stringify(fbResult.value)}.`);
446
+ } else if (!fbResult.skipped && fbResult.action === "upgraded") {
447
+ detail(` fallbackModel upgraded from ${JSON.stringify(fbResult.previous)} to ${JSON.stringify(fbResult.value)}.`);
445
448
  }
446
449
  } catch (err) {
447
450
  detail(` Warning: could not seed fallbackModel (${err.message})`);
@@ -244,13 +244,16 @@ export async function update({ skillsFlag = "" } = {}) {
244
244
  warn(`Output style update failed (${err.message})`);
245
245
  }
246
246
  // Runtime Sync PR3 — seed fallbackModel on update too, so machines that
247
- // installed before the chain existed get it. If-absent only: an operator
248
- // chain (array, empty array or legacy string) is never touched.
247
+ // installed before the chain existed get it, and a chain that is exactly
248
+ // a previous ArkaOS default moves to the current one. An operator chain
249
+ // (array, empty array or legacy string) is never touched.
249
250
  try {
250
251
  const { seedFallbackModel } = await import("./fallback-model.js");
251
252
  const fbResult = seedFallbackModel({ runtime: manifest.runtime || "claude-code" });
252
253
  if (!fbResult.skipped && fbResult.action === "created") {
253
254
  ok(`fallbackModel set to ${JSON.stringify(fbResult.value)}`);
255
+ } else if (!fbResult.skipped && fbResult.action === "upgraded") {
256
+ ok(`fallbackModel upgraded from ${JSON.stringify(fbResult.previous)} to ${JSON.stringify(fbResult.value)}`);
254
257
  }
255
258
  } catch (err) {
256
259
  warn(`fallbackModel seed failed (${err.message})`);
@@ -1554,8 +1554,7 @@
1554
1554
  "edit video",
1555
1555
  "edita o vídeo",
1556
1556
  "render video",
1557
- "monta o vídeo",
1558
- "hyperframes"
1557
+ "monta o vídeo"
1559
1558
  ],
1560
1559
  "examples": [
1561
1560
  "produz um vídeo sobre agentes de AI",
@@ -1563,6 +1562,34 @@
1563
1562
  "edita este vídeo com legendas e b-roll"
1564
1563
  ]
1565
1564
  },
1565
+ "content-hyperframes": {
1566
+ "keywords": [
1567
+ "hyperframes",
1568
+ "hyperframes.json",
1569
+ "video as code",
1570
+ "vídeo em código",
1571
+ "renderiza o vídeo",
1572
+ "render the video",
1573
+ "render composition",
1574
+ "renderiza a composição",
1575
+ "keyframes",
1576
+ "motion graphic",
1577
+ "legendas embutidas",
1578
+ "embedded captions",
1579
+ "lower third",
1580
+ "title card",
1581
+ "remotion",
1582
+ "figma to video",
1583
+ "figma para vídeo",
1584
+ "slideshow",
1585
+ "faceless explainer"
1586
+ ],
1587
+ "examples": [
1588
+ "renderiza o projeto hyperframes em ./launch-film",
1589
+ "add word-level captions to this talking head",
1590
+ "converte esta composição remotion para hyperframes"
1591
+ ]
1592
+ },
1566
1593
  "content-trends": {
1567
1594
  "keywords": [
1568
1595
  "trends",
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "_meta": {
3
3
  "version": "3.0.0",
4
- "generated": "2026-09-03T22:16:44Z",
5
- "total_commands": 306,
4
+ "generated": "2026-09-06T10:59:22Z",
5
+ "total_commands": 307,
6
6
  "generator": "core/registry/generator.py",
7
7
  "departments": {
8
8
  "arka": 22,
9
9
  "brand": 14,
10
10
  "community": 15,
11
- "content": 20,
11
+ "content": 21,
12
12
  "dev": 42,
13
13
  "ecom": 18,
14
14
  "fin": 10,
@@ -1350,8 +1350,7 @@
1350
1350
  "edit video",
1351
1351
  "edita o vídeo",
1352
1352
  "render video",
1353
- "monta o vídeo",
1354
- "hyperframes"
1353
+ "monta o vídeo"
1355
1354
  ],
1356
1355
  "examples": [
1357
1356
  "produz um vídeo sobre agentes de AI",
@@ -1363,6 +1362,43 @@
1363
1362
  "requires_branch": false,
1364
1363
  "modifies_code": false
1365
1364
  },
1365
+ {
1366
+ "id": "content-hyperframes",
1367
+ "command": "/content hyperframes <task>",
1368
+ "department": "content",
1369
+ "description": "Direct Hyperframes work: compose, animate, caption, port, render and review a video-as-code project",
1370
+ "lead_agent": "arka-content",
1371
+ "keywords": [
1372
+ "hyperframes",
1373
+ "hyperframes.json",
1374
+ "video as code",
1375
+ "vídeo em código",
1376
+ "renderiza o vídeo",
1377
+ "render the video",
1378
+ "render composition",
1379
+ "renderiza a composição",
1380
+ "keyframes",
1381
+ "motion graphic",
1382
+ "legendas embutidas",
1383
+ "embedded captions",
1384
+ "lower third",
1385
+ "title card",
1386
+ "remotion",
1387
+ "figma to video",
1388
+ "figma para vídeo",
1389
+ "slideshow",
1390
+ "faceless explainer"
1391
+ ],
1392
+ "examples": [
1393
+ "renderiza o projeto hyperframes em ./launch-film",
1394
+ "add word-level captions to this talking head",
1395
+ "converte esta composição remotion para hyperframes"
1396
+ ],
1397
+ "source": "builtin",
1398
+ "tier": 2,
1399
+ "requires_branch": false,
1400
+ "modifies_code": false
1401
+ },
1366
1402
  {
1367
1403
  "id": "content-trends",
1368
1404
  "command": "/content trends <niche>",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "_meta": {
3
3
  "generator": "scripts/marketplace_gen.py",
4
- "version": "5.17.0",
4
+ "version": "5.17.2",
5
5
  "marketplace": "arkaos"
6
6
  },
7
7
  "structural": {
@@ -1715,6 +1715,19 @@
1715
1715
  "origin": "arkaos"
1716
1716
  }
1717
1717
  },
1718
+ "hyperframes": {
1719
+ "depts": [
1720
+ "content"
1721
+ ],
1722
+ "curated": false,
1723
+ "plugins": [
1724
+ "arkaos-content@arkaos"
1725
+ ],
1726
+ "collision": false,
1727
+ "provenance": {
1728
+ "origin": "arkaos"
1729
+ }
1730
+ },
1718
1731
  "identity-system": {
1719
1732
  "depts": [
1720
1733
  "brand"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arkaos",
3
- "version": "5.17.0",
3
+ "version": "5.17.2",
4
4
  "description": "The Operating System for AI Agent Teams",
5
5
  "type": "module",
6
6
  "bin": {
package/pyproject.toml CHANGED
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "arkaos-core"
3
- version = "5.17.0"
3
+ version = "5.17.2"
4
4
  description = "Core engine for ArkaOS — The Operating System for AI Agent Teams"
5
5
  readme = "README.md"
6
6
  license = {text = "MIT"}