pi-harness-runtime 1.1.415 → 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.
Files changed (119) hide show
  1. package/package.json +1 -1
  2. package/packages/a2a-adapter/package.json +1 -1
  3. package/packages/agent-policy/package.json +1 -1
  4. package/packages/architecture-generator/package.json +1 -1
  5. package/packages/auth/package.json +1 -1
  6. package/packages/autonomous-refactor/package.json +1 -1
  7. package/packages/autonomous-runtime/package.json +1 -1
  8. package/packages/cache-strategy/package.json +1 -1
  9. package/packages/capability-registry/package.json +1 -1
  10. package/packages/checkpoint/package.json +1 -1
  11. package/packages/cli-plugin-sdk/package.json +1 -1
  12. package/packages/clipboard/package.json +1 -1
  13. package/packages/clipboard-plugin/package.json +1 -1
  14. package/packages/code-generation/package.json +1 -1
  15. package/packages/code-review/package.json +1 -1
  16. package/packages/codex-adapter/package.json +1 -1
  17. package/packages/codex-watcher/package.json +1 -1
  18. package/packages/config-capture/package.json +1 -1
  19. package/packages/connection-runtime/package.json +1 -1
  20. package/packages/context-compiler/package.json +1 -1
  21. package/packages/context-discovery/package.json +1 -1
  22. package/packages/context-manager/package.json +1 -1
  23. package/packages/contracts/package.json +1 -1
  24. package/packages/cookie-sanitizer/package.json +1 -1
  25. package/packages/cost-optimizer/package.json +1 -1
  26. package/packages/dependency-analyzer/package.json +1 -1
  27. package/packages/django-plugin/package.json +1 -1
  28. package/packages/doc-generator/package.json +1 -1
  29. package/packages/durable-review/package.json +1 -1
  30. package/packages/e2e-tester/package.json +1 -1
  31. package/packages/evaluation-engine/package.json +1 -1
  32. package/packages/evaluation-runner/package.json +1 -1
  33. package/packages/event-bus/package.json +1 -1
  34. package/packages/event-sink/package.json +1 -1
  35. package/packages/event-store/package.json +1 -1
  36. package/packages/experience-replay/package.json +1 -1
  37. package/packages/feedback-collector/package.json +1 -1
  38. package/packages/file-copy-helper/package.json +1 -1
  39. package/packages/framework-detector/package.json +1 -1
  40. package/packages/framework-plugin-sdk/package.json +1 -1
  41. package/packages/frappe-plugin/package.json +1 -1
  42. package/packages/generic-web-plugin/package.json +1 -1
  43. package/packages/health-monitor/package.json +1 -1
  44. package/packages/intent-analyzer/package.json +1 -1
  45. package/packages/jev-judge/package.json +1 -1
  46. package/packages/knowledge-graph/package.json +1 -1
  47. package/packages/knowledge-retrieval/package.json +1 -1
  48. package/packages/laravel-plugin/package.json +1 -1
  49. package/packages/learning-engine/package.json +1 -1
  50. package/packages/logging/package.json +1 -1
  51. package/packages/mcp-adapter/package.json +1 -1
  52. package/packages/memory-engine/package.json +1 -1
  53. package/packages/milestone-manager/package.json +1 -1
  54. package/packages/model-registry/package.json +1 -1
  55. package/packages/nextjs-plugin/package.json +1 -1
  56. package/packages/notification/package.json +1 -1
  57. package/packages/observability/package.json +1 -1
  58. package/packages/okf-indexer/package.json +1 -1
  59. package/packages/paperclip-integration/package.json +1 -1
  60. package/packages/performance-optimizer/package.json +1 -1
  61. package/packages/permission-mode/package.json +1 -1
  62. package/packages/privilege-broker/package.json +1 -1
  63. package/packages/project-analyzer/package.json +1 -1
  64. package/packages/project-bootstrap/package.json +1 -1
  65. package/packages/projection-engine/package.json +1 -1
  66. package/packages/prompt-compiler/package.json +1 -1
  67. package/packages/prompt-versioning/package.json +1 -1
  68. package/packages/provider-adapter-sdk/package.json +1 -1
  69. package/packages/provider-router/package.json +1 -1
  70. package/packages/provider-selector/package.json +1 -1
  71. package/packages/providers/package.json +1 -1
  72. package/packages/qdrant-skills/package.json +1 -1
  73. package/packages/quota-manager/package.json +1 -1
  74. package/packages/rate-limiter/package.json +1 -1
  75. package/packages/react-vite-plugin/package.json +1 -1
  76. package/packages/relay/package.json +1 -1
  77. package/packages/release-manager/package.json +1 -1
  78. package/packages/requirement-compiler/package.json +1 -1
  79. package/packages/runtime/package.json +1 -1
  80. package/packages/scheduler/package.json +1 -1
  81. package/packages/scheduler-adapter/package.json +1 -1
  82. package/packages/session/package.json +1 -1
  83. package/packages/session-api/package.json +1 -1
  84. package/packages/session-export/package.json +1 -1
  85. package/packages/shared-context/package.json +1 -1
  86. package/packages/skill-mcp-client/package.json +1 -1
  87. package/packages/skill-registry/package.json +1 -1
  88. package/packages/skills/dist/sanitize.d.ts +5 -0
  89. package/packages/skills/dist/sanitize.d.ts.map +1 -1
  90. package/packages/skills/dist/sanitize.js +37 -12
  91. package/packages/skills/dist/sanitize.js.map +1 -1
  92. package/packages/skills/package.json +1 -1
  93. package/packages/skills/src/sanitize.ts +37 -12
  94. package/packages/skills/test/sanitize.test.ts +43 -0
  95. package/packages/skills/test/vector-schema.test.ts +15 -2
  96. package/packages/sprint-planner/package.json +1 -1
  97. package/packages/subscription-engine/package.json +1 -1
  98. package/packages/task-compiler/package.json +1 -1
  99. package/packages/telegram/package.json +1 -1
  100. package/packages/tencentdb-memory/package.json +1 -1
  101. package/packages/tencentdb-sync/package.json +1 -1
  102. package/packages/test-data-generator/package.json +1 -1
  103. package/packages/test-generator/package.json +1 -1
  104. package/packages/todo-bd-sync/package.json +1 -1
  105. package/packages/token-estimation/package.json +1 -1
  106. package/packages/token-optimizer/package.json +1 -1
  107. package/packages/tooling-preference/package.json +1 -1
  108. package/packages/trajectory/package.json +1 -1
  109. package/packages/tui/package.json +1 -1
  110. package/packages/two-phase-review/package.json +1 -1
  111. package/packages/types/package.json +1 -1
  112. package/packages/voice-api/package.json +1 -1
  113. package/packages/webmcp-tester/package.json +1 -1
  114. package/packages/wiki/package.json +1 -1
  115. package/packages/workflow-events/package.json +1 -1
  116. package/packages/workspace-scanner/package.json +1 -1
  117. package/packages/worktree/package.json +1 -1
  118. package/packages/write-review/package.json +1 -1
  119. package/scripts/sync-to-qdrant.ts +18 -37
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/workspace-scanner",
3
- "version": "1.1.415",
3
+ "version": "1.1.416",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/worktree",
3
- "version": "1.1.415",
3
+ "version": "1.1.416",
4
4
  "description": "pi-harness-runtime — worktree",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moocoding/write-review",
3
- "version": "1.1.415",
3
+ "version": "1.1.416",
4
4
  "description": "Two-agent write-review loop with blackboard coordination",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -12,7 +12,7 @@
12
12
  */
13
13
 
14
14
  import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
15
- import { join, basename } from "node:path";
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,13 +31,11 @@ import {
31
31
  skillPointPayload,
32
32
  skillQdrantPoint,
33
33
  } from "../packages/skills/dist/vector-schema.js";
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";
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";
41
39
 
42
40
  // =============================================================================
43
41
  // Qdrant Config
@@ -85,44 +83,27 @@ interface SkillDoc {
85
83
  text: string;
86
84
  }
87
85
 
88
- function parseFrontmatter(content: string): Record<string, string> | null {
89
- const match = content.match(/^---\n([\s\S]*?)\n---/);
90
- if (!match) return null;
91
-
92
- const fm: Record<string, string> = {};
93
- for (const line of match[1].split("\n")) {
94
- const idx = line.indexOf(":");
95
- if (idx === -1) continue;
96
- fm[line.slice(0, idx).trim()] = line.slice(idx + 1).trim();
97
- }
98
- return fm;
99
- }
100
-
101
86
  function readSkill(dirPath: string): SkillDoc | null {
102
87
  const skillPath = join(dirPath, "SKILL.md");
103
88
  if (!existsSync(skillPath)) return null;
104
89
 
105
90
  try {
106
91
  const rawContent = readFileSync(skillPath, "utf-8");
107
- const fm = parseFrontmatter(rawContent);
108
- if (!fm) return null;
109
-
110
- // Get original skill name from directory
111
- const originalName = fm.name || basename(dirPath);
112
-
113
- // Sanitize content
114
- const sanitizedContent = sanitizeText(rawContent);
115
-
116
- // Use name map for known sensitive skill names, otherwise sanitize
117
- const name = skillPointName(originalName);
118
-
119
- const description = sanitizeText(fm.description || "");
120
- 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);
121
97
 
122
98
  // The payload and the text come from the shared schema, so this script
123
99
  // 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 });
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
+ });
126
107
 
127
108
  return {
128
109
  name: payload.name,