pi-harness-runtime 1.1.413 → 1.1.415
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 +19 -7
- package/packages/skills/dist/loader.d.ts.map +1 -1
- package/packages/skills/dist/loader.js +39 -22
- package/packages/skills/dist/loader.js.map +1 -1
- package/packages/skills/dist/sanitize.d.ts +27 -0
- package/packages/skills/dist/sanitize.d.ts.map +1 -0
- package/packages/skills/dist/sanitize.js +75 -0
- package/packages/skills/dist/sanitize.js.map +1 -0
- package/packages/skills/dist/vector-schema.d.ts +93 -4
- package/packages/skills/dist/vector-schema.d.ts.map +1 -1
- package/packages/skills/dist/vector-schema.js +71 -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 +53 -27
- package/packages/skills/src/sanitize.ts +86 -0
- package/packages/skills/src/vector-schema.ts +127 -4
- package/packages/skills/test/remote-skills.test.ts +41 -0
- package/packages/skills/test/sanitize.test.ts +88 -0
- package/packages/skills/test/vector-schema.test.ts +167 -0
- 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 +29 -69
|
@@ -28,60 +28,16 @@ import {
|
|
|
28
28
|
import {
|
|
29
29
|
LEGACY_SKILL_COLLECTION,
|
|
30
30
|
SKILL_COLLECTION,
|
|
31
|
+
skillPointPayload,
|
|
32
|
+
skillQdrantPoint,
|
|
31
33
|
} from "../packages/skills/dist/vector-schema.js";
|
|
32
|
-
|
|
33
|
-
//
|
|
34
|
-
//
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
replacement: string;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const SANITIZATION_RULES: SanitizationRule[] = [
|
|
43
|
-
// Client company names (case-insensitive)
|
|
44
|
-
{ pattern: /\binpac\b/gi, replacement: "[Client A]" },
|
|
45
|
-
{ pattern: /\bm-capital\b/gi, replacement: "[Client A]" },
|
|
46
|
-
{ pattern: /\bmcapital\b/gi, replacement: "[Client A]" },
|
|
47
|
-
{ pattern: /\bdigisoft\b/gi, replacement: "[Client B]" },
|
|
48
|
-
|
|
49
|
-
// Project/app specific names
|
|
50
|
-
{ pattern: /\bgse-insurance\b/gi, replacement: "[Insurance Project]" },
|
|
51
|
-
{ pattern: /\btbs-import\b/gi, replacement: "[Import Project]" },
|
|
52
|
-
{ pattern: /\bdigisoft_erp\b/gi, replacement: "[Client B Erp]" },
|
|
53
|
-
{ pattern: /\bm_capital\b/gi, replacement: "[Client A]" },
|
|
54
|
-
{ pattern: /\binpac_\b/gi, replacement: "[Client A]_" },
|
|
55
|
-
{ pattern: /\bpaperclip_\b/gi, replacement: "[Client D]_" },
|
|
56
|
-
{ pattern: /\bopenclaw_\b/gi, replacement: "[Client F]_" },
|
|
57
|
-
|
|
58
|
-
// Generic replacements
|
|
59
|
-
{ pattern: /Company Name/gi, replacement: "[Client Name]" },
|
|
60
|
-
{ pattern: /your company/gi, replacement: "[Client]" },
|
|
61
|
-
{ pattern: /our client/gi, replacement: "[Client]" },
|
|
62
|
-
{ pattern: /client-specific/gi, replacement: "[Project-specific]" },
|
|
63
|
-
];
|
|
64
|
-
|
|
65
|
-
// Skill name sanitization (for skill directory name -> sanitized display name)
|
|
66
|
-
const SKILL_NAME_MAP: Record<string, string> = {
|
|
67
|
-
'gse-insurance-step5-slot-filter': 'insurance-project-step-filter',
|
|
68
|
-
'inpac-pe-approval-workflow': 'client-a-pe-approval-workflow',
|
|
69
|
-
'inpac-po-approval-workflow': 'client-a-po-approval-workflow',
|
|
70
|
-
'inpac-pr-approval-workflow': 'client-a-pr-approval-workflow',
|
|
71
|
-
'tbs-import-clearance-lcv': 'import-project-clearance',
|
|
72
|
-
'whispertool': 'whisper-tool',
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Sanitize text by replacing client-specific patterns
|
|
77
|
-
*/
|
|
78
|
-
function sanitize(text: string): string {
|
|
79
|
-
let result = text;
|
|
80
|
-
for (const rule of SANITIZATION_RULES) {
|
|
81
|
-
result = result.replace(rule.pattern, rule.replacement);
|
|
82
|
-
}
|
|
83
|
-
return result;
|
|
84
|
-
}
|
|
34
|
+
// The sanitization lives in the shared package: the runtime registry writes
|
|
35
|
+
// into the same collection and needs the same rules, or it would leave the
|
|
36
|
+
// raw name and the raw body of a client skill in a shared cluster.
|
|
37
|
+
import {
|
|
38
|
+
sanitizeText,
|
|
39
|
+
skillPointName,
|
|
40
|
+
} from "../packages/skills/dist/sanitize.js";
|
|
85
41
|
|
|
86
42
|
// =============================================================================
|
|
87
43
|
// Qdrant Config
|
|
@@ -123,7 +79,6 @@ function parseHostPort(url: string): { host: string; port: number } {
|
|
|
123
79
|
// =============================================================================
|
|
124
80
|
|
|
125
81
|
interface SkillDoc {
|
|
126
|
-
id: number;
|
|
127
82
|
name: string;
|
|
128
83
|
description: string;
|
|
129
84
|
body: string;
|
|
@@ -156,23 +111,24 @@ function readSkill(dirPath: string): SkillDoc | null {
|
|
|
156
111
|
const originalName = fm.name || basename(dirPath);
|
|
157
112
|
|
|
158
113
|
// Sanitize content
|
|
159
|
-
const sanitizedContent =
|
|
114
|
+
const sanitizedContent = sanitizeText(rawContent);
|
|
160
115
|
|
|
161
116
|
// Use name map for known sensitive skill names, otherwise sanitize
|
|
162
|
-
const name =
|
|
117
|
+
const name = skillPointName(originalName);
|
|
163
118
|
|
|
164
|
-
const description =
|
|
119
|
+
const description = sanitizeText(fm.description || "");
|
|
165
120
|
const body = sanitizedContent.replace(/^---[\s\S]*?---\n/, "").trim();
|
|
166
|
-
|
|
167
|
-
//
|
|
168
|
-
|
|
121
|
+
|
|
122
|
+
// The payload and the text come from the shared schema, so this script
|
|
123
|
+
// and the runtime store the SAME point for the same skill: the point
|
|
124
|
+
// id is the hash of the name the payload carries.
|
|
125
|
+
const payload = skillPointPayload({ name, description, body });
|
|
169
126
|
|
|
170
127
|
return {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
text,
|
|
128
|
+
name: payload.name,
|
|
129
|
+
description: payload.description,
|
|
130
|
+
body: payload.body,
|
|
131
|
+
text: payload.text,
|
|
176
132
|
};
|
|
177
133
|
} catch {
|
|
178
134
|
return null;
|
|
@@ -273,12 +229,16 @@ async function upsertSkills(
|
|
|
273
229
|
}
|
|
274
230
|
|
|
275
231
|
const points = skills.map((skill, idx) => ({
|
|
276
|
-
|
|
277
|
-
|
|
232
|
+
// The point comes from the shared schema, so this script and the
|
|
233
|
+
// runtime store the SAME point for the same skill. A sequential id
|
|
234
|
+
// would leave a second point for every skill the runtime also indexes,
|
|
235
|
+
// and could overwrite an unrelated one.
|
|
236
|
+
...skillQdrantPoint({
|
|
278
237
|
name: skill.name,
|
|
279
238
|
description: skill.description,
|
|
280
239
|
body: skill.body,
|
|
281
|
-
|
|
240
|
+
text: skill.text,
|
|
241
|
+
}),
|
|
282
242
|
vector: embeddings[idx],
|
|
283
243
|
}));
|
|
284
244
|
|
|
@@ -431,7 +391,7 @@ Usage:
|
|
|
431
391
|
Environment:
|
|
432
392
|
QDRANT_API_KEY Your Qdrant Cloud API key
|
|
433
393
|
QDRANT_CLUSTER_ENDPOINT Qdrant URL
|
|
434
|
-
QDRANT_COLLECTION Collection name (default:
|
|
394
|
+
QDRANT_COLLECTION Collection name (default: ${SKILL_COLLECTION})
|
|
435
395
|
|
|
436
396
|
Or create file:
|
|
437
397
|
~/.pi-harness-runtime/keys/qdrant-api-key.txt
|