arkaos 4.0.1 → 4.0.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 (52) hide show
  1. package/VERSION +1 -1
  2. package/core/__pycache__/__init__.cpython-312.pyc +0 -0
  3. package/core/cognition/__pycache__/__init__.cpython-312.pyc +0 -0
  4. package/core/cognition/__pycache__/retrieval.cpython-312.pyc +0 -0
  5. package/core/cognition/capture/__pycache__/__init__.cpython-312.pyc +0 -0
  6. package/core/cognition/capture/__pycache__/store.cpython-312.pyc +0 -0
  7. package/core/cognition/insights/__pycache__/__init__.cpython-312.pyc +0 -0
  8. package/core/cognition/insights/__pycache__/store.cpython-312.pyc +0 -0
  9. package/core/cognition/memory/__pycache__/__init__.cpython-312.pyc +0 -0
  10. package/core/cognition/memory/__pycache__/obsidian.cpython-312.pyc +0 -0
  11. package/core/cognition/memory/__pycache__/schemas.cpython-312.pyc +0 -0
  12. package/core/cognition/memory/__pycache__/vector.cpython-312.pyc +0 -0
  13. package/core/cognition/memory/__pycache__/writer.cpython-312.pyc +0 -0
  14. package/core/knowledge/__pycache__/__init__.cpython-312.pyc +0 -0
  15. package/core/knowledge/__pycache__/chunker.cpython-312.pyc +0 -0
  16. package/core/knowledge/__pycache__/embedder.cpython-312.pyc +0 -0
  17. package/core/knowledge/__pycache__/vector_store.cpython-312.pyc +0 -0
  18. package/core/runtime/__pycache__/__init__.cpython-312.pyc +0 -0
  19. package/core/runtime/__pycache__/base.cpython-312.pyc +0 -0
  20. package/core/runtime/__pycache__/claude_code.cpython-312.pyc +0 -0
  21. package/core/runtime/__pycache__/codex_cli.cpython-312.pyc +0 -0
  22. package/core/runtime/__pycache__/cursor.cpython-312.pyc +0 -0
  23. package/core/runtime/__pycache__/gemini_cli.cpython-312.pyc +0 -0
  24. package/core/runtime/__pycache__/llm_cost_telemetry.cpython-312.pyc +0 -0
  25. package/core/runtime/__pycache__/llm_provider.cpython-312.pyc +0 -0
  26. package/core/runtime/__pycache__/ollama_provider.cpython-312.pyc +0 -0
  27. package/core/runtime/__pycache__/pricing.cpython-312.pyc +0 -0
  28. package/core/runtime/__pycache__/registry.cpython-312.pyc +0 -0
  29. package/core/runtime/__pycache__/user_paths.cpython-312.pyc +0 -0
  30. package/core/shared/__pycache__/__init__.cpython-312.pyc +0 -0
  31. package/core/shared/__pycache__/safe_session_id.cpython-312.pyc +0 -0
  32. package/core/synapse/__pycache__/__init__.cpython-312.pyc +0 -0
  33. package/core/synapse/__pycache__/cache.cpython-312.pyc +0 -0
  34. package/core/synapse/__pycache__/engine.cpython-312.pyc +0 -0
  35. package/core/synapse/__pycache__/kb_cache.cpython-312.pyc +0 -0
  36. package/core/synapse/__pycache__/layers.cpython-312.pyc +0 -0
  37. package/core/workflow/__pycache__/__init__.cpython-312.pyc +0 -0
  38. package/core/workflow/__pycache__/engine.cpython-312.pyc +0 -0
  39. package/core/workflow/__pycache__/loader.cpython-312.pyc +0 -0
  40. package/core/workflow/__pycache__/schema.cpython-312.pyc +0 -0
  41. package/departments/brand/agents/ux-designer.yaml +1 -0
  42. package/departments/brand/agents/visual-designer.yaml +2 -0
  43. package/departments/dev/agents/frontend-dev.yaml +2 -0
  44. package/installer/index.js +4 -0
  45. package/installer/update.js +4 -0
  46. package/package.json +1 -1
  47. package/pyproject.toml +1 -1
  48. package/scripts/bench/__pycache__/__init__.cpython-313.pyc +0 -0
  49. package/scripts/bench/__pycache__/harness.cpython-313.pyc +0 -0
  50. package/scripts/bench/__pycache__/run.cpython-313.pyc +0 -0
  51. package/scripts/tools/__pycache__/sync_wiki.cpython-313.pyc +0 -0
  52. package/scripts/tools/sync_wiki.py +163 -0
package/VERSION CHANGED
@@ -1 +1 @@
1
- 4.0.1
1
+ 4.0.2
@@ -70,6 +70,7 @@ expertise:
70
70
  - WCAG 2.1 AA
71
71
  - Two-Part Conversion Formula
72
72
  - Microinteractions (trigger-rules-feedback-loops)
73
+ - runtime:frontend-design (Anthropic skill)
73
74
  knowledge_sources:
74
75
  - "[[Area 02 - Design]]"
75
76
  - "[[Design Studio - Colaboração Multidisciplinar]]"
@@ -57,6 +57,8 @@ expertise:
57
57
  - Brand Identity Process (Wheeler)
58
58
  - ArkaOS Design Tokens
59
59
  - WCAG AA contrast
60
+ - runtime:frontend-design (Anthropic skill)
61
+ - runtime:ui-ux-pro-max (community skill)
60
62
  depth: expert
61
63
  years_equivalent: 8
62
64
 
@@ -64,6 +64,8 @@ expertise:
64
64
  - CWV Optimization
65
65
  - ArkaOS Motion System
66
66
  - Design Tokens (DTCG)
67
+ - runtime:frontend-design (Anthropic skill)
68
+ - runtime:ui-ux-pro-max (community skill)
67
69
  depth: expert
68
70
  years_equivalent: 9
69
71
 
@@ -854,6 +854,10 @@ function installSkill(config, installDir) {
854
854
  }
855
855
 
856
856
  ok("MCP infrastructure deployed (profiles, stacks, scripts, arka-prompts server)");
857
+
858
+ // Higgsfield MCP is registered but requires an account + API key to connect.
859
+ // Non-blocking warning: the install succeeds even without a Higgsfield account.
860
+ warn("Higgsfield MCP installed in registry — requires a Higgsfield account + HIGGSFIELD_API_KEY to connect (https://higgsfield.ai). Add per-project: bash apply-mcps.sh --add higgsfield");
857
861
  }
858
862
  }
859
863
 
@@ -395,6 +395,10 @@ export async function update() {
395
395
  }
396
396
 
397
397
  console.log(" ✓ MCP infrastructure updated (profiles, stacks, scripts, arka-prompts server)");
398
+
399
+ // Higgsfield MCP is registered but requires an account + API key to connect.
400
+ // Non-blocking warning: the update succeeds even without a Higgsfield account.
401
+ console.log(" ⚠ Higgsfield MCP in registry — requires a Higgsfield account + HIGGSFIELD_API_KEY to connect (https://higgsfield.ai). Add per-project: bash apply-mcps.sh --add higgsfield");
398
402
  }
399
403
 
400
404
  // ── 6b. Copy feature registry for sync engine ──
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arkaos",
3
- "version": "4.0.1",
3
+ "version": "4.0.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 = "4.0.1"
3
+ version = "4.0.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"}
@@ -0,0 +1,163 @@
1
+ #!/usr/bin/env python3
2
+ """Sync wiki/ -> GitHub Wiki format.
3
+
4
+ The in-repo `wiki/` is the single source of truth. The GitHub Wiki is flat
5
+ (no subdirectories) and references pages by name without the .md extension.
6
+ This transformer flattens `wiki/04-Departments/*` into prefixed page names,
7
+ rewrites every internal link, turns `../docs/` links into absolute repository
8
+ URLs, and generates a `_Sidebar.md` navigation from the page set so the sidebar
9
+ itself stays in sync. It writes the result to an output directory that a CI job
10
+ pushes to the `<repo>.wiki` Git remote.
11
+
12
+ Links inside fenced or inline code are left untouched. Link titles
13
+ (`[x](y.md "title")`) and one level of balanced parentheses in targets are
14
+ handled.
15
+
16
+ Usage:
17
+ python scripts/tools/sync_wiki.py --out /tmp/wiki-out
18
+ python scripts/tools/sync_wiki.py --out /tmp/wiki-out --repo https://github.com/o/n --branch master
19
+ """
20
+ from __future__ import annotations
21
+
22
+ import argparse
23
+ import os.path
24
+ import re
25
+ import sys
26
+ from pathlib import Path
27
+
28
+ _REPO_ROOT = Path(__file__).resolve().parents[2]
29
+ _DEFAULT_REPO = "https://github.com/andreagroferreira/arka-os"
30
+ _DEFAULT_BRANCH = "master"
31
+ # Target group allows one level of balanced parentheses, e.g. Foo_(bar).
32
+ _LINK_RE = re.compile(r"\[([^\]]+)\]\(((?:[^()]|\([^()]*\))*)\)")
33
+ _TITLE_RE = re.compile(r'^(\S+)(\s+"[^"]*"|\s+\'[^\']*\')?$')
34
+ _CODE_RE = re.compile(r"```.*?```|~~~.*?~~~|`[^`\n]+`", re.DOTALL)
35
+ _SENTINEL = "\x00CODE{}\x00"
36
+
37
+
38
+ def page_name(rel_path: str) -> str:
39
+ """Map a wiki-relative .md path to a flat GitHub Wiki page name.
40
+
41
+ Home.md -> Home; 01-Getting-Started.md -> 01-Getting-Started;
42
+ 04-Departments/README.md -> 04-Departments;
43
+ 04-Departments/dev.md -> 04-Departments-dev.
44
+ """
45
+ p = rel_path[:-3] if rel_path.endswith(".md") else rel_path
46
+ parts = p.split("/")
47
+ if parts[-1] == "README":
48
+ parts = parts[:-1]
49
+ return "-".join(parts)
50
+
51
+
52
+ def _mask_code(text: str) -> tuple[str, list[str]]:
53
+ """Replace fenced/inline code spans with sentinels so links inside are safe."""
54
+ spans: list[str] = []
55
+
56
+ def stash(m: re.Match[str]) -> str:
57
+ spans.append(m.group(0))
58
+ return _SENTINEL.format(len(spans) - 1)
59
+
60
+ return _CODE_RE.sub(stash, text), spans
61
+
62
+
63
+ def _unmask_code(text: str, spans: list[str]) -> str:
64
+ """Restore code spans masked by _mask_code."""
65
+ for i, span in enumerate(spans):
66
+ text = text.replace(_SENTINEL.format(i), span)
67
+ return text
68
+
69
+
70
+ def _resolve(base: str, source_rel: str, name_map: dict[str, str],
71
+ repo: str, branch: str) -> str:
72
+ """Resolve a bare target (no title) to a GitHub Wiki page or absolute URL."""
73
+ src_dir = str(Path(source_rel).parent)
74
+ joined = base if src_dir in ("", ".") else f"{src_dir}/{base}"
75
+ norm = os.path.normpath(joined).replace("\\", "/") if base else base
76
+ if base.endswith("/"):
77
+ readme = f"{norm}/README.md"
78
+ if readme in name_map:
79
+ return name_map[readme]
80
+ if norm in name_map:
81
+ return name_map[norm]
82
+ if base.startswith("../"):
83
+ return f"{repo}/blob/{branch}/{norm.lstrip('./')}"
84
+ return base
85
+
86
+
87
+ def _rewrite_target(target: str, source_rel: str, name_map: dict[str, str],
88
+ repo: str, branch: str) -> str:
89
+ """Rewrite one link target, preserving any trailing title and anchor."""
90
+ if "://" in target or target.startswith(("#", "mailto:")):
91
+ return target
92
+ m = _TITLE_RE.match(target)
93
+ url, title = (m.group(1), m.group(2) or "") if m else (target, "")
94
+ base, _, anchor = url.partition("#")
95
+ anchor = f"#{anchor}" if anchor else ""
96
+ resolved = _resolve(base, source_rel, name_map, repo, branch)
97
+ return f"{resolved}{anchor}{title}"
98
+
99
+
100
+ def rewrite_links(content: str, source_rel: str, name_map: dict[str, str],
101
+ repo: str = _DEFAULT_REPO, branch: str = _DEFAULT_BRANCH) -> str:
102
+ """Rewrite every markdown link, leaving code spans untouched."""
103
+ masked, spans = _mask_code(content)
104
+
105
+ def repl(m: re.Match[str]) -> str:
106
+ text, target = m.group(1), m.group(2).strip()
107
+ return f"[{text}]({_rewrite_target(target, source_rel, name_map, repo, branch)})"
108
+
109
+ return _unmask_code(_LINK_RE.sub(repl, masked), spans)
110
+
111
+
112
+ def _build_sidebar(name_map: dict[str, str]) -> str:
113
+ """Generate a _Sidebar.md navigation from the page set (kept in sync)."""
114
+ # top-level pages plus subdirectory index pages (e.g. 04-Departments)
115
+ roots = sorted(n for rel, n in name_map.items()
116
+ if "/" not in rel or rel.endswith("/README.md"))
117
+ depts = sorted(n for rel, n in name_map.items()
118
+ if rel.startswith("04-Departments/") and not rel.endswith("README.md"))
119
+ lines = ["## ArkaOS Wiki", ""]
120
+ lines += [f"- [[{n}]]" for n in roots]
121
+ if depts:
122
+ lines += ["", "### Departments", ""]
123
+ lines += [f"- [[{n}]]" for n in depts]
124
+ return "\n".join(lines) + "\n"
125
+
126
+
127
+ def build_wiki(src_dir: Path, out_dir: Path, repo: str = _DEFAULT_REPO,
128
+ branch: str = _DEFAULT_BRANCH) -> int:
129
+ """Transform all of src_dir into flat GitHub Wiki pages in out_dir.
130
+
131
+ Also writes a generated `_Sidebar.md`. Returns the number of content
132
+ pages written (excluding the sidebar).
133
+ """
134
+ md_files = sorted(str(p.relative_to(src_dir)) for p in src_dir.rglob("*.md"))
135
+ name_map = {rel: page_name(rel) for rel in md_files}
136
+ out_dir.mkdir(parents=True, exist_ok=True)
137
+ for rel in md_files:
138
+ content = (src_dir / rel).read_text(encoding="utf-8")
139
+ rewritten = rewrite_links(content, rel, name_map, repo, branch)
140
+ (out_dir / f"{name_map[rel]}.md").write_text(rewritten, encoding="utf-8")
141
+ (out_dir / "_Sidebar.md").write_text(_build_sidebar(name_map), encoding="utf-8")
142
+ return len(md_files)
143
+
144
+
145
+ def main() -> int:
146
+ """Entry point."""
147
+ parser = argparse.ArgumentParser(description="Sync wiki/ to GitHub Wiki format")
148
+ parser.add_argument("--src", default=str(_REPO_ROOT / "wiki"), help="Source wiki dir")
149
+ parser.add_argument("--out", required=True, help="Output dir for flat wiki pages")
150
+ parser.add_argument("--repo", default=_DEFAULT_REPO, help="Repo URL for absolute links")
151
+ parser.add_argument("--branch", default=_DEFAULT_BRANCH, help="Default branch for absolute links")
152
+ args = parser.parse_args()
153
+ src = Path(args.src)
154
+ if not src.is_dir():
155
+ print(f"Error: source '{src}' is not a directory", file=sys.stderr)
156
+ return 2
157
+ n = build_wiki(src, Path(args.out), args.repo, args.branch)
158
+ print(f"Wrote {n} wiki pages (+ _Sidebar.md) to {args.out}")
159
+ return 0
160
+
161
+
162
+ if __name__ == "__main__":
163
+ sys.exit(main())