mirror of
https://github.com/Kaelio/ktx.git
synced 2026-06-16 08:25:14 +02:00
Merge remote-tracking branch 'origin/main' into andreybavt/historic-sql-redesign
This commit is contained in:
commit
f3f6b36551
56 changed files with 34 additions and 50 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -63,3 +63,4 @@ yarn-error.log*
|
|||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
.vercel
|
||||
|
|
|
|||
1
docs-site/.gitignore
vendored
Normal file
1
docs-site/.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.vercel
|
||||
0
docs/next-env.d.ts → docs-site/next-env.d.ts
vendored
0
docs/next-env.d.ts → docs-site/next-env.d.ts
vendored
|
|
@ -17,6 +17,7 @@
|
|||
"react-dom": "19.2.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^24.3.0",
|
||||
"@types/react": "^19",
|
||||
"@types/react-dom": "^19",
|
||||
"typescript": "^5.9",
|
||||
5
pnpm-lock.yaml
generated
5
pnpm-lock.yaml
generated
|
|
@ -22,7 +22,7 @@ importers:
|
|||
specifier: ^4.0.18
|
||||
version: 4.1.5(@opentelemetry/api@1.9.0)(@types/node@24.12.2)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.3))
|
||||
|
||||
docs:
|
||||
docs-site:
|
||||
dependencies:
|
||||
fumadocs-core:
|
||||
specifier: 15.7.13
|
||||
|
|
@ -46,6 +46,9 @@ importers:
|
|||
'@tailwindcss/postcss':
|
||||
specifier: ^4
|
||||
version: 4.3.0
|
||||
'@types/node':
|
||||
specifier: ^24.3.0
|
||||
version: 24.12.2
|
||||
'@types/react':
|
||||
specifier: ^19
|
||||
version: 19.2.14
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
packages:
|
||||
- "packages/*"
|
||||
- "docs"
|
||||
- "docs-site"
|
||||
|
||||
overrides:
|
||||
"@types/node": ^24.3.0
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import { fileURLToPath, pathToFileURL } from 'node:url';
|
|||
|
||||
const codeExtensions = new Set(['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs', '.py']);
|
||||
const runtimeAssetPatterns = [/^packages\/[^/]+\/prompts\/.+\.md$/, /^packages\/[^/]+\/skills\/.+\.md$/];
|
||||
const identifierSkipPrefixes = ['docs/', 'examples/', 'python/ktx-sl/plans/', 'python/ktx-sl/openspec/'];
|
||||
const identifierSkipPrefixes = ['docs/', 'docs-site/', 'examples/', 'python/ktx-sl/plans/', 'python/ktx-sl/openspec/'];
|
||||
const identifierAllowPatterns = [
|
||||
/^packages\/cli\/src\/(?:index|managed-local-embeddings|managed-python-command|managed-python-daemon|managed-python-runtime|runtime)(?:\.test)?\.ts$/,
|
||||
/^scripts\/(?:build-public-npm-package|build-python-runtime-wheel|local-embeddings-runtime-smoke|package-artifacts|publish-public-npm-package|published-package-smoke|release-readiness)(?:\.test)?\.mjs$/,
|
||||
|
|
|
|||
|
|
@ -32,11 +32,13 @@ describe('Conductor workspace scripts', () => {
|
|||
assert.doesNotMatch(setupScript, /scripts\/conductor\//);
|
||||
});
|
||||
|
||||
it('links private agent overlays when KTX_AGENT_OVERLAYS_ROOT is set', async () => {
|
||||
it('links private agent overlays from the Conductor root checkout', async () => {
|
||||
const workspaceScript = await readText('scripts/conductor-setup.sh');
|
||||
|
||||
assert.match(workspaceScript, /KTX_AGENT_OVERLAYS_ROOT/);
|
||||
assert.match(workspaceScript, /ln -s "\$\{KTX_AGENT_OVERLAYS_ROOT\}\/\.agents" \.agents/);
|
||||
assert.match(workspaceScript, /link_shared_path "\$CONDUCTOR_ROOT_PATH\/\.agents" \.agents/);
|
||||
assert.match(workspaceScript, /link_shared_path "\$CONDUCTOR_ROOT_PATH\/\.claude" \.claude/);
|
||||
assert.doesNotMatch(workspaceScript, /KTX_AGENT_OVERLAYS_ROOT/);
|
||||
assert.doesNotMatch(workspaceScript, /link_agent_skills_for_claude/);
|
||||
});
|
||||
|
||||
it('runs the KTX daemon on the documented fixed local port', async () => {
|
||||
|
|
|
|||
|
|
@ -82,63 +82,39 @@ resolve_uv_for_project() {
|
|||
printf '%s\n' "$workspace_uv"
|
||||
}
|
||||
|
||||
link_agent_overlays() {
|
||||
if [ -z "${KTX_AGENT_OVERLAYS_ROOT:-}" ] || [ ! -d "${KTX_AGENT_OVERLAYS_ROOT}/.agents" ]; then
|
||||
link_shared_path() {
|
||||
local source_path="$1"
|
||||
local link_path="$2"
|
||||
|
||||
if [ ! -e "$source_path" ] && [ ! -L "$source_path" ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [ -L "$link_path" ]; then
|
||||
ln -sfn "$source_path" "$link_path"
|
||||
echo "Linked $link_path"
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [ -L .agents ]; then
|
||||
return 0
|
||||
if [ -e "$link_path" ]; then
|
||||
echo "Skipping $link_path symlink because $link_path already exists and is not a symlink." >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [ -e .agents ]; then
|
||||
echo "Skipping .agents symlink because .agents already exists and is not a symlink." >&2
|
||||
return 0
|
||||
fi
|
||||
|
||||
ln -s "${KTX_AGENT_OVERLAYS_ROOT}/.agents" .agents
|
||||
ln -s "$source_path" "$link_path"
|
||||
echo "Linked $link_path"
|
||||
}
|
||||
|
||||
# Expose .agents/skills/* to Claude Code by symlinking each entry under
|
||||
# .claude/skills/. Codex CLI reads .agents/skills/ directly; Claude Code only
|
||||
# scans .claude/skills/, so the overlay needs both sides to be visible to both
|
||||
# tools.
|
||||
link_agent_skills_for_claude() {
|
||||
if [ ! -d .agents/skills ]; then
|
||||
return 0
|
||||
link_agent_overlays() {
|
||||
if [ -n "${CONDUCTOR_ROOT_PATH:-}" ]; then
|
||||
link_shared_path "$CONDUCTOR_ROOT_PATH/.agents" .agents || true
|
||||
link_shared_path "$CONDUCTOR_ROOT_PATH/.claude" .claude || true
|
||||
fi
|
||||
|
||||
mkdir -p .claude/skills
|
||||
|
||||
for skill_path in .agents/skills/*; do
|
||||
[ -e "$skill_path" ] || continue
|
||||
|
||||
local skill_name
|
||||
skill_name="$(basename "$skill_path")"
|
||||
local link_path=".claude/skills/$skill_name"
|
||||
local target="../../.agents/skills/$skill_name"
|
||||
|
||||
if [ -L "$link_path" ]; then
|
||||
if [ "$(readlink "$link_path")" = "$target" ]; then
|
||||
continue
|
||||
fi
|
||||
echo "Skipping $link_path: existing symlink points elsewhere." >&2
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ -e "$link_path" ]; then
|
||||
echo "Skipping $link_path: already exists and is not a symlink." >&2
|
||||
continue
|
||||
fi
|
||||
|
||||
ln -s "$target" "$link_path"
|
||||
done
|
||||
}
|
||||
|
||||
echo "=== Conductor KTX workspace setup ==="
|
||||
|
||||
link_agent_overlays
|
||||
link_agent_skills_for_claude
|
||||
|
||||
if [ -n "${CONDUCTOR_ROOT_PATH:-}" ] && [ -f "$CONDUCTOR_ROOT_PATH/.env" ]; then
|
||||
ln -sf "$CONDUCTOR_ROOT_PATH/.env" .env
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue