pi-harness-runtime 1.1.414 → 1.1.416
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/package.json +1 -1
- package/packages/a2a-adapter/package.json +1 -1
- package/packages/agent-policy/package.json +1 -1
- package/packages/architecture-generator/package.json +1 -1
- package/packages/auth/package.json +1 -1
- package/packages/autonomous-refactor/package.json +1 -1
- package/packages/autonomous-runtime/package.json +1 -1
- package/packages/cache-strategy/package.json +1 -1
- package/packages/capability-registry/package.json +1 -1
- package/packages/checkpoint/package.json +1 -1
- package/packages/cli-plugin-sdk/package.json +1 -1
- package/packages/clipboard/package.json +1 -1
- package/packages/clipboard-plugin/package.json +1 -1
- package/packages/code-generation/package.json +1 -1
- package/packages/code-review/package.json +1 -1
- package/packages/codex-adapter/package.json +1 -1
- package/packages/codex-watcher/package.json +1 -1
- package/packages/config-capture/package.json +1 -1
- package/packages/connection-runtime/package.json +1 -1
- package/packages/context-compiler/package.json +1 -1
- package/packages/context-discovery/package.json +1 -1
- package/packages/context-manager/package.json +1 -1
- package/packages/contracts/package.json +1 -1
- package/packages/cookie-sanitizer/package.json +1 -1
- package/packages/cost-optimizer/package.json +1 -1
- package/packages/dependency-analyzer/package.json +1 -1
- package/packages/django-plugin/package.json +1 -1
- package/packages/doc-generator/package.json +1 -1
- package/packages/durable-review/package.json +1 -1
- package/packages/e2e-tester/package.json +1 -1
- package/packages/evaluation-engine/package.json +1 -1
- package/packages/evaluation-runner/package.json +1 -1
- package/packages/event-bus/package.json +1 -1
- package/packages/event-sink/package.json +1 -1
- package/packages/event-store/package.json +1 -1
- package/packages/experience-replay/package.json +1 -1
- package/packages/feedback-collector/package.json +1 -1
- package/packages/file-copy-helper/package.json +1 -1
- package/packages/framework-detector/package.json +1 -1
- package/packages/framework-plugin-sdk/package.json +1 -1
- package/packages/frappe-plugin/package.json +1 -1
- package/packages/generic-web-plugin/package.json +1 -1
- package/packages/health-monitor/package.json +1 -1
- package/packages/intent-analyzer/package.json +1 -1
- package/packages/jev-judge/package.json +1 -1
- package/packages/knowledge-graph/package.json +1 -1
- package/packages/knowledge-retrieval/package.json +1 -1
- package/packages/laravel-plugin/package.json +1 -1
- package/packages/learning-engine/package.json +1 -1
- package/packages/logging/package.json +1 -1
- package/packages/mcp-adapter/package.json +1 -1
- package/packages/memory-engine/package.json +1 -1
- package/packages/milestone-manager/package.json +1 -1
- package/packages/model-registry/package.json +1 -1
- package/packages/nextjs-plugin/package.json +1 -1
- package/packages/notification/package.json +1 -1
- package/packages/observability/package.json +1 -1
- package/packages/okf-indexer/package.json +1 -1
- package/packages/paperclip-integration/package.json +1 -1
- package/packages/performance-optimizer/package.json +1 -1
- package/packages/permission-mode/package.json +1 -1
- package/packages/privilege-broker/package.json +1 -1
- package/packages/project-analyzer/package.json +1 -1
- package/packages/project-bootstrap/package.json +1 -1
- package/packages/projection-engine/package.json +1 -1
- package/packages/prompt-compiler/package.json +1 -1
- package/packages/prompt-versioning/package.json +1 -1
- package/packages/provider-adapter-sdk/package.json +1 -1
- package/packages/provider-router/package.json +1 -1
- package/packages/provider-selector/package.json +1 -1
- package/packages/providers/package.json +1 -1
- package/packages/qdrant-skills/package.json +1 -1
- package/packages/quota-manager/package.json +1 -1
- package/packages/rate-limiter/package.json +1 -1
- package/packages/react-vite-plugin/package.json +1 -1
- package/packages/relay/package.json +1 -1
- package/packages/release-manager/package.json +1 -1
- package/packages/requirement-compiler/package.json +1 -1
- package/packages/runtime/package.json +1 -1
- package/packages/scheduler/package.json +1 -1
- package/packages/scheduler-adapter/package.json +1 -1
- package/packages/session/package.json +1 -1
- package/packages/session-api/package.json +1 -1
- package/packages/session-export/package.json +1 -1
- package/packages/shared-context/package.json +1 -1
- package/packages/skill-mcp-client/package.json +1 -1
- package/packages/skill-registry/package.json +1 -1
- package/packages/skills/dist/index.d.ts +1 -0
- package/packages/skills/dist/index.d.ts.map +1 -1
- package/packages/skills/dist/index.js +1 -0
- package/packages/skills/dist/index.js.map +1 -1
- package/packages/skills/dist/loader.d.ts +9 -0
- package/packages/skills/dist/loader.d.ts.map +1 -1
- package/packages/skills/dist/loader.js +24 -3
- package/packages/skills/dist/loader.js.map +1 -1
- package/packages/skills/dist/sanitize.d.ts +32 -0
- package/packages/skills/dist/sanitize.d.ts.map +1 -0
- package/packages/skills/dist/sanitize.js +100 -0
- package/packages/skills/dist/sanitize.js.map +1 -0
- package/packages/skills/dist/vector-schema.d.ts +4 -0
- package/packages/skills/dist/vector-schema.d.ts.map +1 -1
- package/packages/skills/dist/vector-schema.js +13 -4
- package/packages/skills/dist/vector-schema.js.map +1 -1
- package/packages/skills/package.json +1 -1
- package/packages/skills/src/index.ts +1 -0
- package/packages/skills/src/loader.ts +26 -3
- package/packages/skills/src/sanitize.ts +111 -0
- package/packages/skills/src/vector-schema.ts +14 -4
- package/packages/skills/test/remote-skills.test.ts +41 -0
- package/packages/skills/test/sanitize.test.ts +131 -0
- package/packages/skills/test/vector-schema.test.ts +15 -2
- package/packages/sprint-planner/package.json +1 -1
- package/packages/subscription-engine/package.json +1 -1
- package/packages/task-compiler/package.json +1 -1
- package/packages/telegram/package.json +1 -1
- package/packages/tencentdb-memory/package.json +1 -1
- package/packages/tencentdb-sync/package.json +1 -1
- package/packages/test-data-generator/package.json +1 -1
- package/packages/test-generator/package.json +1 -1
- package/packages/todo-bd-sync/package.json +1 -1
- package/packages/token-estimation/package.json +1 -1
- package/packages/token-optimizer/package.json +1 -1
- package/packages/tooling-preference/package.json +1 -1
- package/packages/trajectory/package.json +1 -1
- package/packages/tui/package.json +1 -1
- package/packages/two-phase-review/package.json +1 -1
- package/packages/types/package.json +1 -1
- package/packages/voice-api/package.json +1 -1
- package/packages/webmcp-tester/package.json +1 -1
- package/packages/wiki/package.json +1 -1
- package/packages/workflow-events/package.json +1 -1
- package/packages/workspace-scanner/package.json +1 -1
- package/packages/worktree/package.json +1 -1
- package/packages/write-review/package.json +1 -1
- package/scripts/sync-to-qdrant.ts +18 -83
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
|
|
15
|
-
import { join
|
|
15
|
+
import { join } from "node:path";
|
|
16
16
|
import { QdrantClient } from "@qdrant/js-client-rest";
|
|
17
17
|
// The runtime and this script must write into the SAME collection with the
|
|
18
18
|
// SAME vectors: a collection holds vectors of exactly one size, and a vector
|
|
@@ -31,59 +31,11 @@ import {
|
|
|
31
31
|
skillPointPayload,
|
|
32
32
|
skillQdrantPoint,
|
|
33
33
|
} from "../packages/skills/dist/vector-schema.js";
|
|
34
|
-
|
|
35
|
-
//
|
|
36
|
-
//
|
|
37
|
-
//
|
|
38
|
-
|
|
39
|
-
interface SanitizationRule {
|
|
40
|
-
pattern: RegExp;
|
|
41
|
-
replacement: string;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
const SANITIZATION_RULES: SanitizationRule[] = [
|
|
45
|
-
// Client company names (case-insensitive)
|
|
46
|
-
{ pattern: /\binpac\b/gi, replacement: "[Client A]" },
|
|
47
|
-
{ pattern: /\bm-capital\b/gi, replacement: "[Client A]" },
|
|
48
|
-
{ pattern: /\bmcapital\b/gi, replacement: "[Client A]" },
|
|
49
|
-
{ pattern: /\bdigisoft\b/gi, replacement: "[Client B]" },
|
|
50
|
-
|
|
51
|
-
// Project/app specific names
|
|
52
|
-
{ pattern: /\bgse-insurance\b/gi, replacement: "[Insurance Project]" },
|
|
53
|
-
{ pattern: /\btbs-import\b/gi, replacement: "[Import Project]" },
|
|
54
|
-
{ pattern: /\bdigisoft_erp\b/gi, replacement: "[Client B Erp]" },
|
|
55
|
-
{ pattern: /\bm_capital\b/gi, replacement: "[Client A]" },
|
|
56
|
-
{ pattern: /\binpac_\b/gi, replacement: "[Client A]_" },
|
|
57
|
-
{ pattern: /\bpaperclip_\b/gi, replacement: "[Client D]_" },
|
|
58
|
-
{ pattern: /\bopenclaw_\b/gi, replacement: "[Client F]_" },
|
|
59
|
-
|
|
60
|
-
// Generic replacements
|
|
61
|
-
{ pattern: /Company Name/gi, replacement: "[Client Name]" },
|
|
62
|
-
{ pattern: /your company/gi, replacement: "[Client]" },
|
|
63
|
-
{ pattern: /our client/gi, replacement: "[Client]" },
|
|
64
|
-
{ pattern: /client-specific/gi, replacement: "[Project-specific]" },
|
|
65
|
-
];
|
|
66
|
-
|
|
67
|
-
// Skill name sanitization (for skill directory name -> sanitized display name)
|
|
68
|
-
const SKILL_NAME_MAP: Record<string, string> = {
|
|
69
|
-
'gse-insurance-step5-slot-filter': 'insurance-project-step-filter',
|
|
70
|
-
'inpac-pe-approval-workflow': 'client-a-pe-approval-workflow',
|
|
71
|
-
'inpac-po-approval-workflow': 'client-a-po-approval-workflow',
|
|
72
|
-
'inpac-pr-approval-workflow': 'client-a-pr-approval-workflow',
|
|
73
|
-
'tbs-import-clearance-lcv': 'import-project-clearance',
|
|
74
|
-
'whispertool': 'whisper-tool',
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Sanitize text by replacing client-specific patterns
|
|
79
|
-
*/
|
|
80
|
-
function sanitize(text: string): string {
|
|
81
|
-
let result = text;
|
|
82
|
-
for (const rule of SANITIZATION_RULES) {
|
|
83
|
-
result = result.replace(rule.pattern, rule.replacement);
|
|
84
|
-
}
|
|
85
|
-
return result;
|
|
86
|
-
}
|
|
34
|
+
// The parser and the sanitization live in the shared package. The runtime
|
|
35
|
+
// registry writes into the same collection and needs the same rules, or it
|
|
36
|
+
// would leave the raw name and the raw body of a client skill in a shared
|
|
37
|
+
// cluster - and a parser of its own would name the same skill differently.
|
|
38
|
+
import { parseSkillContent } from "../packages/skills/dist/parser.js";
|
|
87
39
|
|
|
88
40
|
// =============================================================================
|
|
89
41
|
// Qdrant Config
|
|
@@ -131,44 +83,27 @@ interface SkillDoc {
|
|
|
131
83
|
text: string;
|
|
132
84
|
}
|
|
133
85
|
|
|
134
|
-
function parseFrontmatter(content: string): Record<string, string> | null {
|
|
135
|
-
const match = content.match(/^---\n([\s\S]*?)\n---/);
|
|
136
|
-
if (!match) return null;
|
|
137
|
-
|
|
138
|
-
const fm: Record<string, string> = {};
|
|
139
|
-
for (const line of match[1].split("\n")) {
|
|
140
|
-
const idx = line.indexOf(":");
|
|
141
|
-
if (idx === -1) continue;
|
|
142
|
-
fm[line.slice(0, idx).trim()] = line.slice(idx + 1).trim();
|
|
143
|
-
}
|
|
144
|
-
return fm;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
86
|
function readSkill(dirPath: string): SkillDoc | null {
|
|
148
87
|
const skillPath = join(dirPath, "SKILL.md");
|
|
149
88
|
if (!existsSync(skillPath)) return null;
|
|
150
89
|
|
|
151
90
|
try {
|
|
152
91
|
const rawContent = readFileSync(skillPath, "utf-8");
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
//
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
-
// Sanitize content
|
|
160
|
-
const sanitizedContent = sanitize(rawContent);
|
|
161
|
-
|
|
162
|
-
// Use name map for known sensitive skill names, otherwise sanitize
|
|
163
|
-
const name = SKILL_NAME_MAP[originalName] || sanitize(originalName);
|
|
164
|
-
|
|
165
|
-
const description = sanitize(fm.description || "");
|
|
166
|
-
const body = sanitizedContent.replace(/^---[\s\S]*?---\n/, "").trim();
|
|
92
|
+
// The SAME parser as the runtime registry. A parser of its own would
|
|
93
|
+
// read a quoted name with the quotes and write a point that the
|
|
94
|
+
// runtime never addresses - the two writers would name the same skill
|
|
95
|
+
// differently.
|
|
96
|
+
const skill = parseSkillContent(rawContent, skillPath);
|
|
167
97
|
|
|
168
98
|
// The payload and the text come from the shared schema, so this script
|
|
169
99
|
// and the runtime store the SAME point for the same skill: the point
|
|
170
|
-
// id is the hash of the name the payload carries
|
|
171
|
-
|
|
100
|
+
// id is the hash of the name the payload carries, and the payload
|
|
101
|
+
// carries no client name.
|
|
102
|
+
const payload = skillPointPayload({
|
|
103
|
+
name: skill.id,
|
|
104
|
+
description: skill.frontmatter.description ?? "",
|
|
105
|
+
body: skill.body,
|
|
106
|
+
});
|
|
172
107
|
|
|
173
108
|
return {
|
|
174
109
|
name: payload.name,
|