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.
- package/VERSION +1 -1
- package/core/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/cognition/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/cognition/__pycache__/retrieval.cpython-312.pyc +0 -0
- package/core/cognition/capture/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/cognition/capture/__pycache__/store.cpython-312.pyc +0 -0
- package/core/cognition/insights/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/cognition/insights/__pycache__/store.cpython-312.pyc +0 -0
- package/core/cognition/memory/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/cognition/memory/__pycache__/obsidian.cpython-312.pyc +0 -0
- package/core/cognition/memory/__pycache__/schemas.cpython-312.pyc +0 -0
- package/core/cognition/memory/__pycache__/vector.cpython-312.pyc +0 -0
- package/core/cognition/memory/__pycache__/writer.cpython-312.pyc +0 -0
- package/core/knowledge/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/knowledge/__pycache__/chunker.cpython-312.pyc +0 -0
- package/core/knowledge/__pycache__/embedder.cpython-312.pyc +0 -0
- package/core/knowledge/__pycache__/vector_store.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/base.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/claude_code.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/codex_cli.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/cursor.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/gemini_cli.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/llm_cost_telemetry.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/llm_provider.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/ollama_provider.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/pricing.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/registry.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/user_paths.cpython-312.pyc +0 -0
- package/core/shared/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/shared/__pycache__/safe_session_id.cpython-312.pyc +0 -0
- package/core/synapse/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/synapse/__pycache__/cache.cpython-312.pyc +0 -0
- package/core/synapse/__pycache__/engine.cpython-312.pyc +0 -0
- package/core/synapse/__pycache__/kb_cache.cpython-312.pyc +0 -0
- package/core/synapse/__pycache__/layers.cpython-312.pyc +0 -0
- package/core/workflow/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/workflow/__pycache__/engine.cpython-312.pyc +0 -0
- package/core/workflow/__pycache__/loader.cpython-312.pyc +0 -0
- package/core/workflow/__pycache__/schema.cpython-312.pyc +0 -0
- package/departments/brand/agents/ux-designer.yaml +1 -0
- package/departments/brand/agents/visual-designer.yaml +2 -0
- package/departments/dev/agents/frontend-dev.yaml +2 -0
- package/installer/index.js +4 -0
- package/installer/update.js +4 -0
- package/package.json +1 -1
- package/pyproject.toml +1 -1
- package/scripts/bench/__pycache__/__init__.cpython-313.pyc +0 -0
- package/scripts/bench/__pycache__/harness.cpython-313.pyc +0 -0
- package/scripts/bench/__pycache__/run.cpython-313.pyc +0 -0
- package/scripts/tools/__pycache__/sync_wiki.cpython-313.pyc +0 -0
- package/scripts/tools/sync_wiki.py +163 -0
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
4.0.
|
|
1
|
+
4.0.2
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -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]]"
|
package/installer/index.js
CHANGED
|
@@ -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
|
|
package/installer/update.js
CHANGED
|
@@ -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
package/pyproject.toml
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -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())
|