@gyoungwe/research-suite 0.1.5 → 0.1.7

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 (145) hide show
  1. package/build-manifest.json +2 -2
  2. package/node_modules/@gyoungwe/pi-core/build-manifest.json +2 -2
  3. package/node_modules/@gyoungwe/pi-core/dist/index.mjs +391 -10
  4. package/node_modules/@gyoungwe/pi-core/package.json +1 -1
  5. package/node_modules/@gyoungwe/pi-knowledge/build-manifest.json +68 -3
  6. package/node_modules/@gyoungwe/pi-knowledge/dist/core/capability-discovery.d.ts +7 -0
  7. package/node_modules/@gyoungwe/pi-knowledge/dist/core/capability-discovery.d.ts.map +1 -0
  8. package/node_modules/@gyoungwe/pi-knowledge/dist/core/claim-conflicts.d.ts +30 -0
  9. package/node_modules/@gyoungwe/pi-knowledge/dist/core/claim-conflicts.d.ts.map +1 -0
  10. package/node_modules/@gyoungwe/pi-knowledge/dist/core/config.d.ts +55 -0
  11. package/node_modules/@gyoungwe/pi-knowledge/dist/core/config.d.ts.map +1 -0
  12. package/node_modules/@gyoungwe/pi-knowledge/dist/core/daily-discovery-prompt.d.ts +11 -0
  13. package/node_modules/@gyoungwe/pi-knowledge/dist/core/daily-discovery-prompt.d.ts.map +1 -0
  14. package/node_modules/@gyoungwe/pi-knowledge/dist/core/daily-discovery.d.ts +26 -0
  15. package/node_modules/@gyoungwe/pi-knowledge/dist/core/daily-discovery.d.ts.map +1 -0
  16. package/node_modules/@gyoungwe/pi-knowledge/dist/core/deliverable-review.d.ts +127 -0
  17. package/node_modules/@gyoungwe/pi-knowledge/dist/core/deliverable-review.d.ts.map +1 -0
  18. package/node_modules/@gyoungwe/pi-knowledge/dist/core/evolution.d.ts +39 -0
  19. package/node_modules/@gyoungwe/pi-knowledge/dist/core/evolution.d.ts.map +1 -0
  20. package/node_modules/@gyoungwe/pi-knowledge/dist/core/experience-store.d.ts +290 -0
  21. package/node_modules/@gyoungwe/pi-knowledge/dist/core/experience-store.d.ts.map +1 -0
  22. package/node_modules/@gyoungwe/pi-knowledge/dist/core/extension-helpers.d.ts +38 -0
  23. package/node_modules/@gyoungwe/pi-knowledge/dist/core/extension-helpers.d.ts.map +1 -0
  24. package/node_modules/@gyoungwe/pi-knowledge/dist/core/files.d.ts +39 -0
  25. package/node_modules/@gyoungwe/pi-knowledge/dist/core/files.d.ts.map +1 -0
  26. package/node_modules/@gyoungwe/pi-knowledge/dist/core/flow-cards.d.ts +77 -0
  27. package/node_modules/@gyoungwe/pi-knowledge/dist/core/flow-cards.d.ts.map +1 -0
  28. package/node_modules/@gyoungwe/pi-knowledge/dist/core/graph-cache.d.ts +14 -0
  29. package/node_modules/@gyoungwe/pi-knowledge/dist/core/graph-cache.d.ts.map +1 -0
  30. package/node_modules/@gyoungwe/pi-knowledge/dist/core/graph-retrieval.d.ts +44 -0
  31. package/node_modules/@gyoungwe/pi-knowledge/dist/core/graph-retrieval.d.ts.map +1 -0
  32. package/node_modules/@gyoungwe/pi-knowledge/dist/core/host.d.ts +9 -0
  33. package/node_modules/@gyoungwe/pi-knowledge/dist/core/host.d.ts.map +1 -0
  34. package/node_modules/@gyoungwe/pi-knowledge/dist/core/index.d.ts +46 -0
  35. package/node_modules/@gyoungwe/pi-knowledge/dist/core/index.d.ts.map +1 -0
  36. package/node_modules/@gyoungwe/pi-knowledge/dist/core/ingest-frontmatter.d.ts +125 -0
  37. package/node_modules/@gyoungwe/pi-knowledge/dist/core/ingest-frontmatter.d.ts.map +1 -0
  38. package/node_modules/@gyoungwe/pi-knowledge/dist/core/ingest-identity.d.ts +93 -0
  39. package/node_modules/@gyoungwe/pi-knowledge/dist/core/ingest-identity.d.ts.map +1 -0
  40. package/node_modules/@gyoungwe/pi-knowledge/dist/core/ingest-policy.d.ts +63 -0
  41. package/node_modules/@gyoungwe/pi-knowledge/dist/core/ingest-policy.d.ts.map +1 -0
  42. package/node_modules/@gyoungwe/pi-knowledge/dist/core/layout.d.ts +47 -0
  43. package/node_modules/@gyoungwe/pi-knowledge/dist/core/layout.d.ts.map +1 -0
  44. package/node_modules/@gyoungwe/pi-knowledge/dist/core/maintenance.d.ts +16 -0
  45. package/node_modules/@gyoungwe/pi-knowledge/dist/core/maintenance.d.ts.map +1 -0
  46. package/node_modules/@gyoungwe/pi-knowledge/dist/core/memory-note.d.ts +14 -0
  47. package/node_modules/@gyoungwe/pi-knowledge/dist/core/memory-note.d.ts.map +1 -0
  48. package/node_modules/@gyoungwe/pi-knowledge/dist/core/metacognitive-policy.d.ts +116 -0
  49. package/node_modules/@gyoungwe/pi-knowledge/dist/core/metacognitive-policy.d.ts.map +1 -0
  50. package/node_modules/@gyoungwe/pi-knowledge/dist/core/note-title.d.ts +8 -0
  51. package/node_modules/@gyoungwe/pi-knowledge/dist/core/note-title.d.ts.map +1 -0
  52. package/node_modules/@gyoungwe/pi-knowledge/dist/core/orchestration-policy.d.ts +84 -0
  53. package/node_modules/@gyoungwe/pi-knowledge/dist/core/orchestration-policy.d.ts.map +1 -0
  54. package/node_modules/@gyoungwe/pi-knowledge/dist/core/project-identity.d.ts +70 -0
  55. package/node_modules/@gyoungwe/pi-knowledge/dist/core/project-identity.d.ts.map +1 -0
  56. package/node_modules/@gyoungwe/pi-knowledge/dist/core/publication-policy.d.ts +39 -0
  57. package/node_modules/@gyoungwe/pi-knowledge/dist/core/publication-policy.d.ts.map +1 -0
  58. package/node_modules/@gyoungwe/pi-knowledge/dist/core/publication.d.ts +24 -0
  59. package/node_modules/@gyoungwe/pi-knowledge/dist/core/publication.d.ts.map +1 -0
  60. package/node_modules/@gyoungwe/pi-knowledge/dist/core/recent-by-category.d.ts +15 -0
  61. package/node_modules/@gyoungwe/pi-knowledge/dist/core/recent-by-category.d.ts.map +1 -0
  62. package/node_modules/@gyoungwe/pi-knowledge/dist/core/related-notes.d.ts +4 -0
  63. package/node_modules/@gyoungwe/pi-knowledge/dist/core/related-notes.d.ts.map +1 -0
  64. package/node_modules/@gyoungwe/pi-knowledge/dist/core/reuse.d.ts +124 -0
  65. package/node_modules/@gyoungwe/pi-knowledge/dist/core/reuse.d.ts.map +1 -0
  66. package/node_modules/@gyoungwe/pi-knowledge/dist/core/review-policy.d.ts +12 -0
  67. package/node_modules/@gyoungwe/pi-knowledge/dist/core/review-policy.d.ts.map +1 -0
  68. package/node_modules/@gyoungwe/pi-knowledge/dist/core/runtime-host.d.ts +98 -0
  69. package/node_modules/@gyoungwe/pi-knowledge/dist/core/runtime-host.d.ts.map +1 -0
  70. package/node_modules/@gyoungwe/pi-knowledge/dist/core/search-policy.d.ts +14 -0
  71. package/node_modules/@gyoungwe/pi-knowledge/dist/core/search-policy.d.ts.map +1 -0
  72. package/node_modules/@gyoungwe/pi-knowledge/dist/core/semantic-model.d.ts +85 -0
  73. package/node_modules/@gyoungwe/pi-knowledge/dist/core/semantic-model.d.ts.map +1 -0
  74. package/node_modules/@gyoungwe/pi-knowledge/dist/core/semantic-provider.d.ts +41 -0
  75. package/node_modules/@gyoungwe/pi-knowledge/dist/core/semantic-provider.d.ts.map +1 -0
  76. package/node_modules/@gyoungwe/pi-knowledge/dist/core/semantic-settings.d.ts +30 -0
  77. package/node_modules/@gyoungwe/pi-knowledge/dist/core/semantic-settings.d.ts.map +1 -0
  78. package/node_modules/@gyoungwe/pi-knowledge/dist/core/service.d.ts +171 -0
  79. package/node_modules/@gyoungwe/pi-knowledge/dist/core/service.d.ts.map +1 -0
  80. package/node_modules/@gyoungwe/pi-knowledge/dist/core/source-links.d.ts +13 -0
  81. package/node_modules/@gyoungwe/pi-knowledge/dist/core/source-links.d.ts.map +1 -0
  82. package/node_modules/@gyoungwe/pi-knowledge/dist/core/specialist-delivery.d.ts +8 -0
  83. package/node_modules/@gyoungwe/pi-knowledge/dist/core/specialist-delivery.d.ts.map +1 -0
  84. package/node_modules/@gyoungwe/pi-knowledge/dist/core/specialist-host.d.ts +61 -0
  85. package/node_modules/@gyoungwe/pi-knowledge/dist/core/specialist-host.d.ts.map +1 -0
  86. package/node_modules/@gyoungwe/pi-knowledge/dist/core/specialists.d.ts +55 -0
  87. package/node_modules/@gyoungwe/pi-knowledge/dist/core/specialists.d.ts.map +1 -0
  88. package/node_modules/@gyoungwe/pi-knowledge/dist/core/task-feedback.d.ts +57 -0
  89. package/node_modules/@gyoungwe/pi-knowledge/dist/core/task-feedback.d.ts.map +1 -0
  90. package/node_modules/@gyoungwe/pi-knowledge/dist/core/tool-budget.d.ts +24 -0
  91. package/node_modules/@gyoungwe/pi-knowledge/dist/core/tool-budget.d.ts.map +1 -0
  92. package/node_modules/@gyoungwe/pi-knowledge/dist/core/topic-candidate.d.ts +22 -0
  93. package/node_modules/@gyoungwe/pi-knowledge/dist/core/topic-candidate.d.ts.map +1 -0
  94. package/node_modules/@gyoungwe/pi-knowledge/dist/core/topic-memory.d.ts +79 -0
  95. package/node_modules/@gyoungwe/pi-knowledge/dist/core/topic-memory.d.ts.map +1 -0
  96. package/node_modules/@gyoungwe/pi-knowledge/dist/core/topic-probe.d.ts +2 -0
  97. package/node_modules/@gyoungwe/pi-knowledge/dist/core/topic-probe.d.ts.map +1 -0
  98. package/node_modules/@gyoungwe/pi-knowledge/dist/core/ui-service.d.ts +360 -0
  99. package/node_modules/@gyoungwe/pi-knowledge/dist/core/ui-service.d.ts.map +1 -0
  100. package/node_modules/@gyoungwe/pi-knowledge/dist/core/ui-state.d.ts +28 -0
  101. package/node_modules/@gyoungwe/pi-knowledge/dist/core/ui-state.d.ts.map +1 -0
  102. package/node_modules/@gyoungwe/pi-knowledge/dist/core/wiki-model-review.d.ts +167 -0
  103. package/node_modules/@gyoungwe/pi-knowledge/dist/core/wiki-model-review.d.ts.map +1 -0
  104. package/node_modules/@gyoungwe/pi-knowledge/dist/core/wiki-policy.d.ts +34 -0
  105. package/node_modules/@gyoungwe/pi-knowledge/dist/core/wiki-policy.d.ts.map +1 -0
  106. package/node_modules/@gyoungwe/pi-knowledge/dist/core/wiki-review.d.ts +74 -0
  107. package/node_modules/@gyoungwe/pi-knowledge/dist/core/wiki-review.d.ts.map +1 -0
  108. package/node_modules/@gyoungwe/pi-knowledge/dist/core/worker.d.ts +2 -0
  109. package/node_modules/@gyoungwe/pi-knowledge/dist/core/worker.d.ts.map +1 -0
  110. package/node_modules/@gyoungwe/pi-knowledge/dist/extension/internal-knowledge-extension.d.ts +42 -0
  111. package/node_modules/@gyoungwe/pi-knowledge/dist/extension/internal-knowledge-extension.d.ts.map +1 -0
  112. package/node_modules/@gyoungwe/pi-knowledge/dist/extension/knowledge-extension.d.ts +5 -0
  113. package/node_modules/@gyoungwe/pi-knowledge/dist/extension/knowledge-extension.d.ts.map +1 -0
  114. package/node_modules/@gyoungwe/pi-knowledge/dist/extension/knowledge-worker.d.ts +6 -0
  115. package/node_modules/@gyoungwe/pi-knowledge/dist/extension/knowledge-worker.d.ts.map +1 -0
  116. package/node_modules/@gyoungwe/pi-knowledge/dist/host.d.ts +7 -0
  117. package/node_modules/@gyoungwe/pi-knowledge/dist/host.d.ts.map +1 -0
  118. package/node_modules/@gyoungwe/pi-knowledge/dist/host.mjs +11638 -0
  119. package/node_modules/@gyoungwe/pi-knowledge/dist/index.d.ts +6 -0
  120. package/node_modules/@gyoungwe/pi-knowledge/dist/index.d.ts.map +1 -0
  121. package/node_modules/@gyoungwe/pi-knowledge/dist/index.mjs +4728 -10301
  122. package/node_modules/@gyoungwe/pi-knowledge/dist/maintenance/plan.d.ts +41 -0
  123. package/node_modules/@gyoungwe/pi-knowledge/dist/maintenance/plan.d.ts.map +1 -0
  124. package/node_modules/@gyoungwe/pi-knowledge/dist/maintenance/prompts.d.ts +10 -0
  125. package/node_modules/@gyoungwe/pi-knowledge/dist/maintenance/prompts.d.ts.map +1 -0
  126. package/node_modules/@gyoungwe/pi-knowledge/dist/maintenance/run.d.ts +31 -0
  127. package/node_modules/@gyoungwe/pi-knowledge/dist/maintenance/run.d.ts.map +1 -0
  128. package/node_modules/@gyoungwe/pi-knowledge/lib/knowledge/runtime/.knowledge-worker-manifest.json +9 -0
  129. package/node_modules/@gyoungwe/pi-knowledge/lib/knowledge/runtime/worker.mjs +142 -12
  130. package/node_modules/@gyoungwe/pi-knowledge/package.json +21 -3
  131. package/node_modules/@gyoungwe/pi-knowledge/plugin.manifest.json +23 -1
  132. package/node_modules/@gyoungwe/pi-research/build-manifest.json +2 -2
  133. package/node_modules/@gyoungwe/pi-research/dist/index.mjs +3141 -613
  134. package/node_modules/@gyoungwe/pi-research/package.json +1 -1
  135. package/node_modules/@gyoungwe/plugin-api/dist/index.d.ts +101 -0
  136. package/node_modules/@gyoungwe/plugin-api/dist/index.d.ts.map +1 -1
  137. package/node_modules/@gyoungwe/plugin-api/dist/index.js +124 -0
  138. package/node_modules/@gyoungwe/plugin-api/dist/index.js.map +1 -1
  139. package/node_modules/@gyoungwe/plugin-api/dist/knowledge.d.ts +486 -0
  140. package/node_modules/@gyoungwe/plugin-api/dist/knowledge.d.ts.map +1 -0
  141. package/node_modules/@gyoungwe/plugin-api/dist/knowledge.js +251 -0
  142. package/node_modules/@gyoungwe/plugin-api/dist/knowledge.js.map +1 -0
  143. package/node_modules/@gyoungwe/plugin-api/package.json +6 -1
  144. package/package.json +6 -6
  145. package/plugin.manifest.json +39 -3
@@ -0,0 +1,38 @@
1
+ import { type SessionContextLike } from "./project-identity.js";
2
+ /** Tool result envelope shared by knowledge extension adapters. */
3
+ export interface KnowledgeToolResult<T = unknown> {
4
+ content: Array<{
5
+ type: "text";
6
+ text: string;
7
+ }>;
8
+ details: T;
9
+ }
10
+ /** JSON-safe result envelope for a knowledge tool. */
11
+ export declare function result<T>(data: T): KnowledgeToolResult<T>;
12
+ /**
13
+ * Resolve the knowledge project for a tool call or turn through the shared resolver
14
+ * (`project-identity.ts`): the daily-space session choice, then the workspace's configured
15
+ * `knowledgeProjectId`, then the stable directory-derived identity.
16
+ */
17
+ export declare function currentProject(cwd: string, ctx?: SessionContextLike | null): Promise<string>;
18
+ /** Normalise a stable explainer topic id, dropping generated timestamp suffixes. */
19
+ export declare function explainerTopicId(value: unknown, title?: string): string;
20
+ export interface SessionIdentityContext {
21
+ sessionManager?: {
22
+ getSessionId?: () => string | null | undefined;
23
+ };
24
+ sessionId?: string | null;
25
+ }
26
+ /** Prefer the host session manager, with the event context as a compatibility fallback. */
27
+ export declare function sessionIdentity(ctx: SessionIdentityContext | null | undefined): string | null;
28
+ /** Whether a prompt contains a signal that it continues the previous topic. */
29
+ export declare function continuationHint(value: unknown): boolean;
30
+ export interface TopicForContinuation {
31
+ id?: unknown;
32
+ title?: unknown;
33
+ aliases?: readonly unknown[];
34
+ entities?: readonly unknown[];
35
+ }
36
+ /** Decide whether a prompt continues a topic using explicit switches and topic terms. */
37
+ export declare function continuesTopic(prompt: unknown, topic: TopicForContinuation | null | undefined): boolean;
38
+ //# sourceMappingURL=extension-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-helpers.d.ts","sourceRoot":"","sources":["../../src/core/extension-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,kBAAkB,EAAoB,MAAM,uBAAuB,CAAC;AAE3G,mEAAmE;AACnE,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,OAAO;IAC/C,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC;CACX;AAED,sDAAsD;AACtD,wBAAgB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAKzD;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,kBAAkB,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAElG;AAED,oFAAoF;AACpF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAmB,GAAG,MAAM,CASjF;AAED,MAAM,WAAW,sBAAsB;IACtC,cAAc,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;KAAE,CAAC;IACpE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,2FAA2F;AAC3F,wBAAgB,eAAe,CAAC,GAAG,EAAE,sBAAsB,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAE7F;AAED,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAIxD;AAED,MAAM,WAAW,oBAAoB;IACpC,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CAC9B;AAED,yFAAyF;AACzF,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAUvG"}
@@ -0,0 +1,39 @@
1
+ import { lstat } from "node:fs/promises";
2
+ export declare const MAX_NOTE_BYTES: number;
3
+ export interface NoteStat {
4
+ full: string;
5
+ stat: Awaited<ReturnType<typeof lstat>>;
6
+ signature: string;
7
+ }
8
+ export interface ReadNoteResult {
9
+ path: string;
10
+ text: string;
11
+ hash: string;
12
+ signature: string;
13
+ bytes: number;
14
+ }
15
+ export interface NoteSnippet {
16
+ text: string;
17
+ startLine: number;
18
+ endLine: number;
19
+ totalLines: number;
20
+ truncated: boolean;
21
+ }
22
+ export declare function allowedSegment(name: string): boolean;
23
+ export declare function validateNote(path: unknown): string;
24
+ export declare function noteScope(path: string): string;
25
+ export declare function canRead(path: string, project: string): boolean;
26
+ export declare function fileVersion(stat: {
27
+ mtimeMs: number | bigint;
28
+ ctimeMs: number | bigint;
29
+ size: number | bigint;
30
+ ino: number | bigint;
31
+ }): string;
32
+ export declare function safeNotePath(vault: string, path: string): Promise<string>;
33
+ export declare function inspectNote(vault: string, path: string): Promise<NoteStat>;
34
+ export declare function readNoteFile(vault: string, path: string): Promise<ReadNoteResult>;
35
+ export declare function snippet(text: string, { startLine, maxChars }?: {
36
+ startLine?: number;
37
+ maxChars?: number;
38
+ }): NoteSnippet;
39
+ //# sourceMappingURL=files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/core/files.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAkB,MAAM,kBAAkB,CAAC;AAGzD,eAAO,MAAM,cAAc,QAAc,CAAC;AAkB1C,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOpD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAalD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9C;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAG9D;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE;IACjC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACrB,GAAG,MAAM,CAET;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAY/E;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAKhF;AAUD,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAoCvF;AAED,wBAAgB,OAAO,CACtB,IAAI,EAAE,MAAM,EACZ,EAAE,SAAa,EAAE,QAAe,EAAE,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAChF,WAAW,CAwBb"}
@@ -0,0 +1,77 @@
1
+ export type FlowTone = "ok" | "error" | "muted" | "warn" | string;
2
+ export interface FlowCardField {
3
+ label: string;
4
+ i18n?: unknown;
5
+ value: string;
6
+ status?: boolean;
7
+ code?: string | null;
8
+ note?: string | null;
9
+ tone: FlowTone;
10
+ }
11
+ export interface FlowCardLink {
12
+ kind: "external" | "resource" | "note" | "path";
13
+ target: string;
14
+ label: string;
15
+ i18n?: unknown;
16
+ }
17
+ export interface FlowCard {
18
+ key: string;
19
+ kind: string;
20
+ title: string;
21
+ provisionalTitle: boolean;
22
+ subtitle: string | null;
23
+ status: string;
24
+ tone: FlowTone;
25
+ detail: string | null;
26
+ path: string | null;
27
+ fields: FlowCardField[];
28
+ links: FlowCardLink[];
29
+ source: string | null;
30
+ at: number;
31
+ }
32
+ export interface CardFieldOptions {
33
+ i18n?: unknown;
34
+ status?: boolean;
35
+ code?: unknown;
36
+ note?: unknown;
37
+ tone?: FlowTone;
38
+ }
39
+ export interface FlowCardInput {
40
+ key?: unknown;
41
+ kind?: unknown;
42
+ title?: unknown;
43
+ subtitle?: unknown;
44
+ status?: unknown;
45
+ tone?: FlowTone;
46
+ detail?: unknown;
47
+ path?: unknown;
48
+ fields?: readonly (FlowCardField | null | undefined)[];
49
+ links?: readonly (FlowCardLink | null | undefined)[];
50
+ source?: unknown;
51
+ provisionalTitle?: unknown;
52
+ }
53
+ export interface FlowEventContent {
54
+ type?: unknown;
55
+ text?: unknown;
56
+ }
57
+ export interface FlowEvent {
58
+ toolCallId?: unknown;
59
+ toolName?: unknown;
60
+ result?: {
61
+ content?: readonly FlowEventContent[];
62
+ details?: unknown;
63
+ };
64
+ }
65
+ /** Status marker to tone mapping; display classification never changes the marker. */
66
+ export declare function statusTone(status: unknown): FlowTone;
67
+ export declare function cardField(label: unknown, value: unknown, extra?: CardFieldOptions): FlowCardField;
68
+ export declare function cardLink(kind: FlowCardLink["kind"] | string, target: unknown, label: unknown, i18n?: unknown): FlowCardLink | null;
69
+ /** Construct one generic receipt card; empty fields and null links are omitted. */
70
+ export declare function flowCard(input: FlowCardInput): FlowCard;
71
+ /** Failure card generated when a flow-enabled tool reports an error. */
72
+ export declare function failureCard(event: FlowEvent): FlowCard;
73
+ /** Literature receipt card merged by DOI across Zotero and Vault observations. */
74
+ export declare function literatureCard(event: FlowEvent, { write }?: {
75
+ write?: boolean;
76
+ }): FlowCard | null;
77
+ //# sourceMappingURL=flow-cards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-cards.d.ts","sourceRoot":"","sources":["../../src/core/flow-cards.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Small revision-scoped cache for graph snapshots.
3
+ *
4
+ * Knowledge revisions are monotonic. Once the index changes, every cached
5
+ * projection is stale, so a single revision boundary is enough to invalidate
6
+ * all view/limit combinations without retaining old Vault data.
7
+ */
8
+ export interface RevisionCache<T> {
9
+ get(revision: number, key: string): T | undefined;
10
+ set(revision: number, key: string, value: T): void;
11
+ clear(): void;
12
+ }
13
+ export declare function createRevisionCache<T>(): RevisionCache<T>;
14
+ //# sourceMappingURL=graph-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-cache.d.ts","sourceRoot":"","sources":["../../src/core/graph-cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC;IAC/B,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAClD,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACnD,KAAK,IAAI,IAAI,CAAC;CACd;AAED,wBAAgB,mBAAmB,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,CAwBzD"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Graph-augmented retrieval: after lexical/semantic fusion, expand the top hits by one hop over
3
+ * [[wiki links]] (outgoing and backlinks). Neighbors inherit a decayed share of their parent's
4
+ * score plus a small, capped centrality boost so hub pages cannot dominate the ranking.
5
+ * Pure and deterministic; the worker supplies neighbor rows.
6
+ */
7
+ export interface GraphHitLike {
8
+ path: string;
9
+ fusionScore?: number;
10
+ retrieval?: string;
11
+ [key: string]: unknown;
12
+ }
13
+ export interface GraphNeighbor {
14
+ /** Seed hit this neighbor was reached from. */
15
+ from: string;
16
+ path: string;
17
+ title: string;
18
+ kind: string;
19
+ hash?: string;
20
+ direction: "outgoing" | "backlink";
21
+ degree: number;
22
+ /** For backlinks: the source line that mentions the seed. */
23
+ context?: string;
24
+ }
25
+ export interface GraphExpansionOptions {
26
+ seeds?: number;
27
+ decay?: number;
28
+ centralityWeight?: number;
29
+ centralityCap?: number;
30
+ maxNeighborsPerSeed?: number;
31
+ limit: number;
32
+ }
33
+ export declare const GRAPH_RETRIEVAL_DEFAULTS: {
34
+ readonly seeds: 3;
35
+ readonly decay: 0.5;
36
+ readonly centralityWeight: 0.002;
37
+ readonly centralityCap: 0.004;
38
+ readonly maxNeighborsPerSeed: 4;
39
+ };
40
+ export declare function centralityBoost(degree: number, weight: number, cap: number): number;
41
+ export declare function expandWithGraph(hits: readonly GraphHitLike[], neighbors: readonly GraphNeighbor[], options: GraphExpansionOptions): GraphHitLike[];
42
+ /** The line of `body` that links to `target` (full path or bare note name), trimmed for context. */
43
+ export declare function backlinkContext(body: string, target: string, max?: number): string | undefined;
44
+ //# sourceMappingURL=graph-retrieval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-retrieval.d.ts","sourceRoot":"","sources":["../../src/core/graph-retrieval.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AACD,MAAM,WAAW,aAAa;IAC7B,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,UAAU,GAAG,UAAU,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AACD,MAAM,WAAW,qBAAqB;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;CACd;AACD,eAAO,MAAM,wBAAwB;;;;;;CAM3B,CAAC;AAEX,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGnF;AAMD,wBAAgB,eAAe,CAC9B,IAAI,EAAE,SAAS,YAAY,EAAE,EAC7B,SAAS,EAAE,SAAS,aAAa,EAAE,EACnC,OAAO,EAAE,qBAAqB,GAC5B,YAAY,EAAE,CA4ChB;AAED,oGAAoG;AACpG,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,SAAM,GAAG,MAAM,GAAG,SAAS,CAa3F"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Stable host entry point for the knowledge capability.
3
+ *
4
+ * P1 keeps the existing implementation modules intact and narrows all host
5
+ * consumers to this single package subpath. P2 will replace the implementation
6
+ * behind this entry with the installable plugin package.
7
+ */
8
+ export * from "./index.js";
9
+ //# sourceMappingURL=host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../src/core/host.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,YAAY,CAAC"}
@@ -0,0 +1,46 @@
1
+ export { type ClaimComparison, type ClaimSetComparison, compareClaimSets, compareClaims, type KnowledgeClaim, } from "./claim-conflicts.js";
2
+ export { readCapabilitySources, type CapabilityKnowledgeSourcePort } from "./capability-discovery.js";
3
+ export { createKnowledgeConfigApi, createKnowledgeConfigState, type KnowledgeBinding, type KnowledgeBindingInput, type KnowledgeConfigApi, type KnowledgeConfigState, type KnowledgeDepositMode, type KnowledgeProfile, type KnowledgeSubagentPolicy, knowledgeDirectory, projectIdentity, readKnowledgeBinding, saveKnowledgeBinding, withKnowledgeBinding, } from "./config.js";
4
+ export { continuationHint, continuesTopic, currentProject, explainerTopicId, type KnowledgeToolResult, result, type SessionIdentityContext, sessionIdentity, type TopicForContinuation, } from "./extension-helpers.js";
5
+ export { allowedSegment, canRead, fileVersion, inspectNote, MAX_NOTE_BYTES, noteScope, readNoteFile, safeNotePath, snippet, validateNote, } from "./files.js";
6
+ export { type CardFieldOptions, cardField, cardLink, type FlowCard, type FlowCardField, type FlowCardInput, type FlowCardLink, type FlowEvent, type FlowEventContent, type FlowTone, failureCard, flowCard, literatureCard, statusTone, } from "./flow-cards.js";
7
+ export { containedVaultFile, createVaultFileOnly, initializeProjectContext, initializeSharedNavigation, replaceVaultFile, type KnowledgeLayoutDependencies, type NavigationUpdateResult, type ReplaceVaultFileOptions, VaultFileConflictError, updateVaultNavigation, } from "./layout.js";
8
+ export { createSpecialistBudget, decideSpecialistRun, SPECIALIST_DECISIONS, type SpecialistBudget, type SpecialistBudgetOptions, type SpecialistBudgetSnapshot, type SpecialistDecision, type SpecialistRequestSignatureOptions, type SpecialistRunDecision, type SpecialistRunOptions, type SpecialistUsage, specialistRequestSignature, } from "./orchestration-policy.js";
9
+ export { advisoryLine, advisoryNotice, knowledgeFailure, type PublicationFailure, type PublicationFailureCode, type PublicationVerification, publicationFallbackNotice, publicationNotice, publicationNotices, } from "./publication-policy.js";
10
+ export { evaluateMetacognitivePublication, type MetacognitiveArtifact, type MetacognitiveArtifactNumber, type MetacognitiveDiagnostic, type MetacognitiveEvidenceFinding, type MetacognitiveExecutedWorkflow, type MetacognitiveFailure, type MetacognitiveFailureCode, type MetacognitiveFinding, type MetacognitiveFindingUse, type MetacognitiveLabel, type MetacognitiveMethodClaim, type MetacognitiveNumberClaim, type MetacognitiveSnapshot, type MetacognitiveUseRole, } from "./metacognitive-policy.js";
11
+ export { BackgroundReviewer, type BackgroundReviewerBridge, reviewDeliverable, selectReviewerProvider, type BackgroundReviewRequest, type BackgroundReviewerOptions, type DeliverableReviewFinding, type DeliverableReviewLocation, type DeliverableReviewResult, type DeliverableReviewSnapshot, type ReviewAttemptRecord, type ReviewDeliverableRecord, type ReviewReadReceipt, type ReviewerModelProvider, type ReviewerProviderSelection, type ReviewerSeverity, type ReviewerTrigger, } from "./deliverable-review.js";
12
+ export { advisoryCodes, type ReviewMode, readReviewMode, saveReviewMode, } from "./review-policy.js";
13
+ export { buildKnowledgeSearchExpression, splitKnowledgeChunks, tokenizeKnowledgeText, } from "./search-policy.js";
14
+ export { embedTexts, validateSemanticConfig as validateSemanticProviderConfig } from "./semantic-provider.js";
15
+ export { createSemanticSettingsApi, createSemanticSettingsState, readSemanticSettings, type SemanticConfig, type SemanticProvider, type SemanticSettings, type SemanticSettingsApi, type SemanticSettingsState, saveSemanticSettings, validateSemanticConfig, } from "./semantic-settings.js";
16
+ export { normalizeSourceLinks, onlineSourceLink, type SourceLinkOptions, type SourceLinksResult, } from "./source-links.js";
17
+ export { createTaskFeedback, guardResearchToolResult, type ResearchToolResultEvent, type TaskFeedback, type TaskFeedbackContent, type TaskFeedbackContext, type TaskFeedbackEvent, type TaskFeedbackFacts, type TaskFeedbackFailure, type TaskFeedbackFile, } from "./task-feedback.js";
18
+ export { createToolBudget, type ToolBudget, type ToolBudgetFailure, type ToolBudgetOptions, } from "./tool-budget.js";
19
+ export { autoTopicCandidate, type TopicCandidate, type TopicCandidateInput, type TopicCandidateResult, } from "./topic-candidate.js";
20
+ export { immutableWikiProposalHash, MANAGED_END, MANAGED_START, type ManagedParts, managedParts, proposedWikiText, targetWikiPath, validateSpecialistHtml, validateWikiSourcePaths, type WikiProposalShape, } from "./wiki-policy.js";
21
+ export { TOPIC_MEMORY_LIMITS, TOPIC_MEMORY_VERSION, archiveTopic, classifyTopic, createTopicMemory, listTopics, readTopic, topicRunHash, updateTopic, } from "./topic-memory.js";
22
+ export { runNavigationMaintenance, updateNavigation } from "./maintenance.js";
23
+ export { looksLikeFileName, noteDisplayTitle } from "./note-title.js";
24
+ export { recentByCategory } from "./recent-by-category.js";
25
+ export * from "./daily-discovery.js";
26
+ export * from "./daily-discovery-prompt.js";
27
+ export * from "./memory-note.js";
28
+ export * from "./project-identity.js";
29
+ export * from "./related-notes.js";
30
+ export { configureKnowledgeWorker, configureKnowledgeEvidence, configureKnowledgeHost, configureKnowledgeSetup, createKnowledgeWorker, consumeKnowledgeReviewPreview, deliveryContract, emitKnowledgeWorkerLifecycle, knowledgeWorkerMetadata, KNOWLEDGE_WORKER_LIFECYCLE_EVENT, loadWorkspaceConfig, publishExplainer, LAYOUT, inspectObsidianSetup, inspectSetupDirectory, resolveSetupVault, researchSetupOptions, } from "./runtime-host.js";
31
+ export type { KnowledgeWorkerLifecycleEvent, KnowledgeWorkerMetadata, } from "./runtime-host.js";
32
+ export { configureKnowledgeRuntime } from "./runtime-host.js";
33
+ export { assignCommunities, classifyRelation, createSemanticModel, isInfrastructureNode, nodeType, type RelationType, type SemanticEdgeInput, type SemanticGraph, type SemanticNode, type SemanticNodeInput, type SemanticRelation, type SemanticView, } from "./semantic-model.js";
34
+ export { beginKnowledgeFlow, clearKnowledgeFlow, emitKnowledgeUi, flowFor, invalidateKnowledgeUi, noteKnowledgeOperation, noteKnowledgeRead, noteKnowledgeSearch, noteKnowledgeSpecialist, notifyKnowledgeUi, publicationKnowledgeFlow, requestWikiReviewUi, subscribeKnowledgeUi, updateKnowledgeFlow, } from "./ui-state.js";
35
+ export { projectKnowledgeEvent, projectKnowledgeSnapshot, registerAnswerPublication, } from "./publication.js";
36
+ export { KnowledgeService, closeKnowledgeServices, getKnowledgeService, notifyKnowledgeChange } from "./service.js";
37
+ export { checkKnowledgeReceiptFreshness, checkKnowledgeSnapshotReuse, KnowledgeReuseIndex, ingestKnowledgeSnapshot, knowledgeEvidenceGradeRank, knowledgeReuseLevelRank, resolveKnowledgeContext, validateKnowledgeSourceReceipt, type KnowledgeContext, type KnowledgeContextInput, type KnowledgeFreshnessCheck, type KnowledgeFreshnessOptions, type KnowledgeFreshnessStatus, type KnowledgeReceiptInput, type KnowledgeReuseIndexEntry, type KnowledgeReuseIndexStore, type KnowledgeReuseRequest, type KnowledgeReuseDecision, type KnowledgeReuseStatus, type KnowledgeSnapshotInput, type KnowledgeSourceState, } from "./reuse.js";
38
+ export { autoApplyWikiProposal, decideWikiProposal, listWikiProposals, mergeWikiProposal, previewWikiProposal, stageWikiProposal, undoWikiUpdate, wikiHistory, validateWikiSourcePaths as validateRuntimeWikiSourcePaths, } from "./wiki-review.js";
39
+ export { SPECIALIST_LIMITS, contextSessionId, knowledgeSpecialistHost, registerKnowledgeSpecialistHost, setSpecialistSettings, specialistQueueSnapshot, specialistSettings, withSpecialistSlot, } from "./specialist-host.js";
40
+ export { createKnowledgeSpecialists, knowledgeReadStart, shouldOrientKnowledge } from "./specialists.js";
41
+ export { saveSpecialistExplainer } from "./specialist-delivery.js";
42
+ export { lastWikiModelReview, reviewWikiWithModel } from "./wiki-model-review.js";
43
+ export * from "./ui-service.js";
44
+ export { EXPERIENCE_LIMITS, EXPERIENCE_VERSION, createExperienceStore, experienceInputFromTerminalJob, recordTerminalJobExperience, terminalJobExperienceInput, searchExperiences, type ExperienceArtifact, type ExperienceBinding, type ExperienceDocument, type ExperienceInput, type ExperienceObservation, type ExperienceOutcome, type ExperienceQcDistribution, type ExperienceQcMetric, type ExperienceProvenance, type ExperienceRecord, type ExperienceRepair, type ExperienceResourceUse, type ExperienceSearchHit, type ExperienceSearchResult, type ExperienceStorePort, type TerminalJobExperienceInput, type ExperienceStatus, type ExperienceStore, type ExperienceStoreOptions, type WorkflowSpecDiff, type WorkflowSpecDiffValue, } from "./experience-store.js";
45
+ export { EvolutionIndex, type EvolutionIndexStore } from "./evolution.js";
46
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * 知识入库标准的 frontmatter 规范(schema `drone-note/1`):解析受限 YAML、校验与规范化、确定性序列化。
3
+ * 只覆盖 Obsidian frontmatter 常见写法(映射、列表、行内列表、引号字符串、注释),不执行任何 YAML 标签或锚点。
4
+ * 纯函数,不读写文件。
5
+ */
6
+ import { type KnowledgeIdentity } from "./ingest-identity.js";
7
+ export declare const NOTE_SCHEMA = "drone-note/1";
8
+ /** 知识类(K)笔记类型。 */
9
+ export declare const KNOWLEDGE_TYPES: readonly ["paper", "method", "software", "dataset", "concept", "entity", "idea", "claim", "evidence", "decision", "question", "wiki"];
10
+ /** 运行结果类(R)笔记类型:运行中心笔记、产物指针、展示层讲解。 */
11
+ export declare const RUN_RESULT_TYPES: readonly ["run", "artifact", "explainer"];
12
+ export declare const NOTE_TYPES: readonly ["paper", "method", "software", "dataset", "concept", "entity", "idea", "claim", "evidence", "decision", "question", "wiki", "run", "artifact", "explainer"];
13
+ export type KnowledgeType = (typeof KNOWLEDGE_TYPES)[number];
14
+ export type RunResultType = (typeof RUN_RESULT_TYPES)[number];
15
+ export type NoteType = (typeof NOTE_TYPES)[number];
16
+ /** 分类:知识 / 运行结果 / 临时内容。临时内容不写入 Vault,因此不是合法的 frontmatter `class`。 */
17
+ export type IngestClass = "knowledge" | "run-result" | "ephemeral";
18
+ export type NoteClass = Exclude<IngestClass, "ephemeral">;
19
+ export declare const NOTE_STATUSES: readonly ["candidate", "verified", "stale", "superseded", "archived"];
20
+ export type NoteStatus = (typeof NOTE_STATUSES)[number];
21
+ export declare const NOTE_CONFIDENCE: readonly ["high", "medium", "low"];
22
+ export type NoteConfidence = (typeof NOTE_CONFIDENCE)[number];
23
+ export interface NoteSource {
24
+ doi?: string;
25
+ pmid?: string;
26
+ pmcid?: string;
27
+ arxiv?: string;
28
+ isbn?: string;
29
+ zotero_key?: string;
30
+ url?: string;
31
+ /** Vault 相对路径(`Library/Papers/x.md`)。 */
32
+ vault?: string;
33
+ /** 运行目录内的相对路径(`results/...`)。 */
34
+ file?: string;
35
+ sha256?: string;
36
+ /** 页码、章节、行号等定位。 */
37
+ locator?: string;
38
+ }
39
+ export interface CreatedFrom {
40
+ session?: string;
41
+ run?: string;
42
+ task?: string;
43
+ tool?: string;
44
+ turn?: number;
45
+ }
46
+ export interface NoteFrontmatter {
47
+ schema: typeof NOTE_SCHEMA;
48
+ id?: string;
49
+ type: NoteType;
50
+ class: NoteClass;
51
+ /** `shared` 或规范项目 slug。 */
52
+ project: string;
53
+ status: NoteStatus;
54
+ confidence?: NoteConfidence;
55
+ tags: string[];
56
+ aliases: string[];
57
+ identity: KnowledgeIdentity;
58
+ sources: NoteSource[];
59
+ created_from?: CreatedFrom;
60
+ derived_from: string[];
61
+ content_sha256?: string;
62
+ created?: string;
63
+ updated?: string;
64
+ }
65
+ export declare const FRONTMATTER_KEY_ORDER: readonly ["schema", "id", "type", "class", "project", "status", "confidence", "tags", "aliases", "identity", "sources", "created_from", "derived_from", "content_sha256", "created", "updated"];
66
+ export declare const PROJECT_SLUG: RegExp;
67
+ export declare function isKnowledgeType(value: unknown): value is KnowledgeType;
68
+ export declare function isNoteType(value: unknown): value is NoteType;
69
+ /** 类型对应的默认分类。 */
70
+ export declare function classForType(type: NoteType): NoteClass;
71
+ export interface FrontmatterSplit {
72
+ /** 没有 frontmatter 时为 null。 */
73
+ raw: string | null;
74
+ body: string;
75
+ }
76
+ /** 拆出开头的 frontmatter 块。第一行必须是 `---`,以 `---` 或 `...` 结束。 */
77
+ export declare function splitFrontmatter(text: string): FrontmatterSplit;
78
+ export interface ParsedFrontmatter {
79
+ data: Record<string, unknown> | null;
80
+ body: string;
81
+ errors: string[];
82
+ }
83
+ /** 解析一篇笔记的 frontmatter。语法错误不抛异常,而是放进 `errors`,`data` 为 null。 */
84
+ export declare function parseFrontmatter(text: string): ParsedFrontmatter;
85
+ export interface FrontmatterValidation {
86
+ /** 有错误时为 null。 */
87
+ value: NoteFrontmatter | null;
88
+ errors: string[];
89
+ warnings: string[];
90
+ }
91
+ /** Obsidian 标签:去掉 `#`,空白换成 `-`,只允许字母数字、`_`、`-`、`/`,不能是纯数字;统一小写。 */
92
+ export declare function normalizeTag(input: unknown): string | null;
93
+ /**
94
+ * 校验并规范化 frontmatter(通常是 {@link parseFrontmatter} 的 `data`)。
95
+ * - 缺少 `class` 时按 `type` 推导;`class` 与 `type` 矛盾报错。
96
+ * - 旧状态值(draft/generated…)映射到新状态并给出 warning。
97
+ * - `identity` 与 `sources` 中的标识全部规范化;`identity` 缺失时从 `sources` 推导。
98
+ */
99
+ export declare function validateFrontmatter(input: unknown, options?: {
100
+ body?: string;
101
+ }): FrontmatterValidation;
102
+ export interface BuildFrontmatterInput {
103
+ type: NoteType;
104
+ project: string;
105
+ id?: string;
106
+ status?: NoteStatus;
107
+ confidence?: NoteConfidence;
108
+ tags?: readonly string[];
109
+ aliases?: readonly string[];
110
+ identity?: KnowledgeIdentity;
111
+ sources?: readonly unknown[];
112
+ createdFrom?: CreatedFrom;
113
+ derivedFrom?: readonly string[];
114
+ /** 提供正文时自动计算 `content_sha256`。 */
115
+ body?: string;
116
+ created?: string;
117
+ updated?: string;
118
+ }
119
+ /** 由宿主写入方使用:构建一个已规范化的 frontmatter;不合法时抛出包含所有错误的异常。 */
120
+ export declare function buildFrontmatter(input: BuildFrontmatterInput): NoteFrontmatter;
121
+ /** 确定性序列化(固定键顺序、字符串一律 JSON 双引号),返回带 `---` 分隔线的块,末尾有换行。 */
122
+ export declare function serializeFrontmatter(frontmatter: NoteFrontmatter): string;
123
+ /** frontmatter + 正文,组成一篇笔记的完整文本。 */
124
+ export declare function renderNote(frontmatter: NoteFrontmatter, body: string): string;
125
+ //# sourceMappingURL=ingest-frontmatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingest-frontmatter.d.ts","sourceRoot":"","sources":["../../src/core/ingest-frontmatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ /** 去重用的外部标识。字段名与 frontmatter `identity` 一致(snake_case)。 */
2
+ export interface KnowledgeIdentity {
3
+ doi?: string;
4
+ pmid?: string;
5
+ pmcid?: string;
6
+ arxiv?: string;
7
+ isbn?: string;
8
+ zotero_key?: string;
9
+ url?: string;
10
+ }
11
+ export declare const IDENTITY_FIELDS: readonly ["doi", "pmid", "pmcid", "arxiv", "isbn", "zotero_key", "url"];
12
+ export type IdentityField = (typeof IDENTITY_FIELDS)[number];
13
+ /**
14
+ * DOI → 小写裸 DOI(`10.xxxx/...`)。接受 `doi:` 前缀、doi.org / dx.doi.org 链接与 URL 编码;
15
+ * 去掉句末标点。无法识别时返回 null。
16
+ */
17
+ export declare function normalizeDoi(input: unknown): string | null;
18
+ /** PMID → 纯数字字符串。接受 `PMID: 123`、`pmid:123`、PubMed 链接。 */
19
+ export declare function normalizePmid(input: unknown): string | null;
20
+ /** PMCID → `PMC` + 数字(大写)。 */
21
+ export declare function normalizePmcid(input: unknown): string | null;
22
+ /**
23
+ * arXiv → 不带版本号的标识:新式 `2401.01234`,旧式 `hep-th/9901001`。
24
+ * 接受 `arXiv:` 前缀与 arxiv.org/abs|pdf 链接。
25
+ */
26
+ export declare function normalizeArxiv(input: unknown): string | null;
27
+ /** ISBN → 校验通过的 ISBN-13(ISBN-10 自动转换)。 */
28
+ export declare function normalizeIsbn(input: unknown): string | null;
29
+ /** Zotero item key:8 位字母数字(与 `research_deposit_knowledge` 的校验一致)。 */
30
+ export declare function normalizeZoteroKey(input: unknown): string | null;
31
+ /**
32
+ * URL → 去重用的规范形式:只接受 http(s),统一为 https,主机小写并去掉 `www.`,去掉默认端口、
33
+ * 片段、跟踪参数,查询参数排序,路径去掉末尾 `/`。DOI 链接请先用 {@link normalizeDoi}。
34
+ */
35
+ export declare function normalizeUrl(input: unknown): string | null;
36
+ /** 把任意一个来源字符串识别成最具体的标识(DOI > PMID > PMCID > arXiv > ISBN > URL)。 */
37
+ export declare function identifyReference(input: unknown): {
38
+ field: IdentityField;
39
+ value: string;
40
+ } | null;
41
+ export interface ExtractedIdentifiers {
42
+ doi: string[];
43
+ pmid: string[];
44
+ pmcid: string[];
45
+ arxiv: string[];
46
+ url: string[];
47
+ }
48
+ /** 从一段正文中抽取所有可识别的标识(每类最多 64 个,按出现顺序去重)。 */
49
+ export declare function extractIdentifiers(text: unknown): ExtractedIdentifiers;
50
+ /** 规范化一个 identity 对象:未知字段丢弃,无效值丢弃。 */
51
+ export declare function normalizeIdentity(input: unknown): KnowledgeIdentity;
52
+ /** 从来源字符串列表推导 identity:每类取第一个。 */
53
+ export declare function identityFromReferences(references: readonly unknown[]): KnowledgeIdentity;
54
+ /** 标题去重键:NFKC、小写、只保留字母数字(含中文),空白折叠。 */
55
+ export declare function normalizeTitleKey(title: unknown): string;
56
+ /**
57
+ * 去重键,按可信度从高到低排列:`doi:` > `pmid:` > `pmcid:` > `arxiv:` > `isbn:` > `zotero:` > `url:` >
58
+ * `title:<type>:`。第一个是主键;任一键相同即视为同一对象。
59
+ */
60
+ export declare function identityKeys(identity: KnowledgeIdentity, options?: {
61
+ type?: string | null;
62
+ title?: string | null;
63
+ }): string[];
64
+ /** 两个对象是否同一(任一去重键相同)。 */
65
+ export declare function sameIdentity(a: {
66
+ identity?: KnowledgeIdentity;
67
+ type?: string | null;
68
+ title?: string | null;
69
+ }, b: {
70
+ identity?: KnowledgeIdentity;
71
+ type?: string | null;
72
+ title?: string | null;
73
+ }): boolean;
74
+ /** 去掉开头 frontmatter 块(`---` … `---`/`...`),返回正文。 */
75
+ export declare function stripFrontmatter(text: string): string;
76
+ /**
77
+ * 正文内容哈希(`content_sha256`):去掉 frontmatter、换行统一为 LF、去掉行尾空白与首尾空行后取 sha256。
78
+ * 只改 frontmatter 或换行风格不会改变哈希。
79
+ */
80
+ export declare function contentHash(text: string): string;
81
+ export interface ClaimHashInput {
82
+ subject?: unknown;
83
+ predicate?: unknown;
84
+ value?: unknown;
85
+ organism?: unknown;
86
+ tissue?: unknown;
87
+ stage?: unknown;
88
+ method?: unknown;
89
+ sourceHash?: unknown;
90
+ }
91
+ /** 结论去重键:主语、谓词、取值、条件(物种/组织/阶段/方法)与来源哈希规范化后取 sha256。 */
92
+ export declare function claimHash(claim: ClaimHashInput): string;
93
+ //# sourceMappingURL=ingest-identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingest-identity.d.ts","sourceRoot":"","sources":["../../src/core/ingest-identity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { type IngestClass, type KnowledgeType, type NoteType } from "./ingest-frontmatter.js";
2
+ /** 运行结果的用途(与 inquiry `ArtifactPurpose` 对齐,另加日志、来源、摘要、卡片和展示层)。 */
3
+ export type IngestPurpose = "deliverable" | "intermediate" | "log" | "source" | "summary" | "cards" | "presentation" | "navigation";
4
+ export type IngestRule = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
5
+ export declare const INGEST_RULES: Readonly<Record<IngestRule, string>>;
6
+ export interface IngestOrigin {
7
+ /** 产生内容的工具,如 `research_deposit_knowledge`、`research_summarize_run`。 */
8
+ tool?: string;
9
+ /** 工具参数里的类型(deposit 的 `type`)。 */
10
+ type?: string;
11
+ /** inquiry 账本记录(规则 8)。 */
12
+ inquiry?: {
13
+ kind: "finding" | "decision";
14
+ /** finding.reviewStatus 或 decision.status。 */
15
+ status: string;
16
+ };
17
+ }
18
+ export interface IngestInput {
19
+ /** 相对路径(工作区或 Vault),`/` 或 `\` 分隔均可。inquiry 记录可以为空。 */
20
+ path?: string;
21
+ /** 路径所在位置;`vault` 时启用规范目录判定(规则 2)。缺省按路径推断。 */
22
+ location?: "vault" | "workspace";
23
+ origin?: IngestOrigin;
24
+ /** Markdown 正文(可含 frontmatter)。用于规则 2 与规则 7。 */
25
+ text?: string;
26
+ /** 已解析的 frontmatter(优先于从 `text` 解析)。 */
27
+ frontmatter?: Record<string, unknown> | null;
28
+ /** 文件是否命中某个任务里程碑的验收(决定数据/图表是 deliverable 还是 intermediate)。 */
29
+ acceptance?: boolean;
30
+ /** 调用方已确认文件位于某个运行目录内。缺省按路径中的 `results/`、`runs/`、`run-*` 推断。 */
31
+ inRunDir?: boolean;
32
+ }
33
+ export interface IngestDecision {
34
+ class: IngestClass;
35
+ /** 推断出的笔记类型;运行产物文件和临时内容为 null。 */
36
+ type: NoteType | null;
37
+ purpose: IngestPurpose | null;
38
+ rule: IngestRule;
39
+ ruleId: string;
40
+ /** 是知识候选(需要经过质量门 / 审核队列),而不是已确认的知识。 */
41
+ candidate: boolean;
42
+ /** 运行结果容器里含有可抽取的知识原子(如逐篇证据卡)。 */
43
+ extractAtoms: boolean;
44
+ reasons: string[];
45
+ }
46
+ export declare const CANDIDATE_MIN_CHARS = 300;
47
+ /**
48
+ * 按九条有序规则分类。
49
+ *
50
+ * 1. 临时路径(tmp/、.cache/、scratch/、*.tmp …)→ ephemeral
51
+ * 2. 显式声明:frontmatter `class`/`type`,或 Vault 规范目录 → 按声明
52
+ * 3. 工具来源(deposit / Wiki 提议 → knowledge;summarize / archive_source / research_loop / 讲解 → run-result)
53
+ * 4. 运行记录文件名(search-log、*receipts*、metadata.json、manifest、failures、SUMMARY.md …)→ run-result
54
+ * 5. 卡片容器(evidence-cards.md、*-cards.md、claims.md)→ run-result,并标记可抽取知识原子
55
+ * 6. 数据 / 图表后缀 → run-result(命中验收为 deliverable,否则 intermediate)
56
+ * 7. 带来源、≥300 字、含方法或结论标题的 Markdown → knowledge 候选
57
+ * 8. inquiry 中已复核的 finding / 已确认的 decision → knowledge(claim / decision)
58
+ * 9. 兜底:在运行目录内 → run-result(intermediate),否则 ephemeral
59
+ */
60
+ export declare function classifyIngest(input: IngestInput): IngestDecision;
61
+ /** 便于文档与 UI 展示:所有知识类型。 */
62
+ export declare const INGEST_KNOWLEDGE_TYPES: readonly KnowledgeType[];
63
+ //# sourceMappingURL=ingest-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingest-policy.d.ts","sourceRoot":"","sources":["../../src/core/ingest-policy.ts"],"names":[],"mappings":"AAMA,OAAO,EAEN,KAAK,WAAW,EAIhB,KAAK,aAAa,EAClB,KAAK,QAAQ,EAEb,MAAM,yBAAyB,CAAC;AAEjC,iEAAiE;AACjE,MAAM,MAAM,aAAa,GACtB,aAAa,GACb,cAAc,GACd,KAAK,GACL,QAAQ,GACR,SAAS,GACT,OAAO,GACP,cAAc,GACd,YAAY,CAAC;AAEhB,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE3D,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAU7D,CAAC;AAEF,MAAM,WAAW,YAAY;IAC5B,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,OAAO,CAAC,EAAE;QACT,IAAI,EAAE,SAAS,GAAG,UAAU,CAAC;QAC7B,8CAA8C;QAC9C,MAAM,EAAE,MAAM,CAAC;KACf,CAAC;CACF;AAED,MAAM,WAAW,WAAW;IAC3B,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IACjC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7C,8DAA8D;IAC9D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,WAAW,CAAC;IACnB,kCAAkC;IAClC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;IAC9B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,SAAS,EAAE,OAAO,CAAC;IACnB,iCAAiC;IACjC,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;CAClB;AAwID,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAiFvC;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,cAAc,CA2FjE;AAED,0BAA0B;AAC1B,eAAO,MAAM,sBAAsB,EAAE,SAAS,aAAa,EAAoB,CAAC"}