@rubytech/create-maxy-code 0.1.177 → 0.1.179
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/payload/platform/plugins/memory/bin/conversation-archive-ingest.mjs +38 -3
- package/payload/platform/plugins/memory/mcp/dist/index.js +17 -7
- package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/turn-text-cache-path.d.ts +8 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/turn-text-cache-path.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/turn-text-cache-path.js +27 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/turn-text-cache-path.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/lib/section-types.d.ts +10 -6
- package/payload/platform/plugins/memory/mcp/dist/lib/section-types.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-body-server-sliced.test.js +13 -13
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-body-server-sliced.test.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-chat-body-server-sliced.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-chat-body-server-sliced.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-chat-body-server-sliced.test.js +124 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-chat-body-server-sliced.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-section-properties-strip.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-section-properties-strip.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-section-properties-strip.test.js +104 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-section-properties-strip.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-web.d.ts +12 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-web.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-web.js +38 -13
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-web.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts +23 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js +175 -44
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js.map +1 -1
- package/payload/platform/plugins/memory/skills/conversation-archive/SKILL.md +7 -3
- package/payload/platform/plugins/memory/skills/document-ingest/SKILL.md +9 -1
- package/payload/premium-plugins/writer-craft/PLUGIN.md +2 -2
- package/payload/premium-plugins/writer-craft/mcp/dist/index.js +3 -3
- package/payload/premium-plugins/writer-craft/mcp/dist/index.js.map +1 -1
- package/payload/premium-plugins/writer-craft/mcp/dist/lib/voice-corpus.d.ts +4 -22
- package/payload/premium-plugins/writer-craft/mcp/dist/lib/voice-corpus.d.ts.map +1 -1
- package/payload/premium-plugins/writer-craft/mcp/dist/lib/voice-corpus.js +4 -36
- package/payload/premium-plugins/writer-craft/mcp/dist/lib/voice-corpus.js.map +1 -1
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-distil-profile.d.ts.map +1 -1
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-distil-profile.js +34 -2
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-distil-profile.js.map +1 -1
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-retrieve-conditioning.d.ts.map +1 -1
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-retrieve-conditioning.js +24 -5
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-retrieve-conditioning.js.map +1 -1
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-tag-content.d.ts +2 -2
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-tag-content.d.ts.map +1 -1
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-tag-content.js +14 -28
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-tag-content.js.map +1 -1
- package/payload/premium-plugins/writer-craft/mcp/scripts/smoke.mjs +21 -41
- package/payload/premium-plugins/writer-craft/mcp/src/index.ts +5 -5
- package/payload/premium-plugins/writer-craft/mcp/src/lib/voice-corpus.ts +4 -41
- package/payload/premium-plugins/writer-craft/mcp/src/tools/voice-distil-profile.ts +32 -2
- package/payload/premium-plugins/writer-craft/mcp/src/tools/voice-retrieve-conditioning.ts +25 -5
- package/payload/premium-plugins/writer-craft/mcp/src/tools/voice-tag-content.ts +16 -31
- package/payload/premium-plugins/writer-craft/skills/voice-mirror/SKILL.md +16 -19
|
@@ -40,7 +40,7 @@ function resolveUserId() {
|
|
|
40
40
|
}
|
|
41
41
|
// Format enum schema — shared across tools that accept VoiceFormat.
|
|
42
42
|
const zFormat = z.enum([...FORMAT_VALUES]).describe("Writing format: text | email | social-post | article | marketing-copy | note. One :VoiceProfile per (accountId, userId, format).");
|
|
43
|
-
server.tool("voice-tag-content", "Stamp authorshipMode
|
|
43
|
+
server.tool("voice-tag-content", "Stamp authorshipMode and format on one or many content nodes (:KnowledgeDocument | :Message | :SocialPost) the operator owns. Email threads live as :KnowledgeDocument {source:'email'} since Task 321. Valid modes: human-only, human-led-agent-assisted, agent-led-human-reviewed, agent-only, unknown. Valid formats: text, email, social-post, article, marketing-copy, note. format is editorial — the operator chooses it per node; the tool does not infer it.", {
|
|
44
44
|
nodeIds: z.array(z.string()).min(1).describe("Element IDs of nodes to tag"),
|
|
45
45
|
mode: z
|
|
46
46
|
.enum([
|
|
@@ -51,7 +51,7 @@ server.tool("voice-tag-content", "Stamp authorshipMode (and optionally format) o
|
|
|
51
51
|
"unknown",
|
|
52
52
|
])
|
|
53
53
|
.describe("Authorship mode to apply"),
|
|
54
|
-
format: zFormat.
|
|
54
|
+
format: zFormat.describe("Writing format. Required — the operator's editorial classification of the content."),
|
|
55
55
|
}, async ({ nodeIds, mode, format }) => {
|
|
56
56
|
if (!accountId)
|
|
57
57
|
return refuseNoAccount("voice-tag-content");
|
|
@@ -66,7 +66,7 @@ server.tool("voice-tag-content", "Stamp authorshipMode (and optionally format) o
|
|
|
66
66
|
content: [
|
|
67
67
|
{
|
|
68
68
|
type: "text",
|
|
69
|
-
text: `voice-tag: mode=${mode} format=${format
|
|
69
|
+
text: `voice-tag: mode=${mode} format=${format} updated=${result.updated} skipped=${result.skipped}`,
|
|
70
70
|
},
|
|
71
71
|
],
|
|
72
72
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uDAAuD,CAAC;AACtF,aAAa,CAAC,cAAc,CAAC,CAAC;AAE9B,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAuB,MAAM,8BAA8B,CAAC;AACtG,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,mBAAmB;IACzB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,wEAAwE;AACxE,mEAAmE;AACnE,sBAAsB;AACtB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC;AACjD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC;AACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,iCAAiC,SAAS,IAAI,MAAM,WAAW,SAAS,IAAI,MAAM,IAAI,CACvF,CAAC;AAEF,SAAS,eAAe,CAAC,QAAgB;IACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uBAAuB,QAAQ,qCAAqC,CACrE,CAAC;IACF,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,GAAG,QAAQ,4HAA4H;aAC9I;SACF;QACD,OAAO,EAAE,IAAa;KACvB,CAAC;AACJ,CAAC;AAED,SAAS,aAAa;IACpB,uEAAuE;IACvE,wEAAwE;IACxE,oEAAoE;IACpE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,oEAAoE;AACpE,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,aAAa,CAA0B,CAAC,CAAC,QAAQ,CAC1E,kIAAkI,CACnI,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,7 +45,10 @@ export declare const TAGGABLE_PRIMARY_LABELS: readonly ["KnowledgeDocument", "Me
|
|
|
45
45
|
* Closed enum of writing-format values. One `:VoiceProfile` exists per
|
|
46
46
|
* `(accountId, userId, format)`. Adding a new value is a separate task.
|
|
47
47
|
*
|
|
48
|
-
*
|
|
48
|
+
* Format is an editorial classification set by the operator at tag time.
|
|
49
|
+
* The only auto-tagged path is `voice-ingest-session-text`, which hard-codes
|
|
50
|
+
* `format='text'` on `:Message` because chat turns are unambiguously text and
|
|
51
|
+
* the operator is not in the loop on session end.
|
|
49
52
|
*/
|
|
50
53
|
export declare const FORMAT_VALUES: readonly ["text", "email", "social-post", "article", "marketing-copy", "note"];
|
|
51
54
|
export type VoiceFormat = (typeof FORMAT_VALUES)[number];
|
|
@@ -59,25 +62,4 @@ export type VoiceFormat = (typeof FORMAT_VALUES)[number];
|
|
|
59
62
|
* walks use this function.
|
|
60
63
|
*/
|
|
61
64
|
export declare function voiceCorpusWhereWithFormat(format: VoiceFormat): string;
|
|
62
|
-
/**
|
|
63
|
-
* Derives the default writing format for a corpus node from its labels
|
|
64
|
-
* and properties. Used by ingest writers and `voice-tag-content` when the
|
|
65
|
-
* operator does not specify a format explicitly.
|
|
66
|
-
*
|
|
67
|
-
* Derivation rules (first match wins):
|
|
68
|
-
*
|
|
69
|
-
* | Node shape | format |
|
|
70
|
-
* |-------------------------------------------------------------|---------------|
|
|
71
|
-
* | :Message | 'text' |
|
|
72
|
-
* | :SocialPost | 'social-post' |
|
|
73
|
-
* | :KnowledgeDocument {source:'email'} | 'email' |
|
|
74
|
-
* | :ConversationArchive {source:'email'} | 'email' |
|
|
75
|
-
* | :KnowledgeDocument (non-email), body.length > 1500 | 'article' |
|
|
76
|
-
* | :KnowledgeDocument (non-email), body.length ≤ 1500 | 'note' |
|
|
77
|
-
* | :Section (conversation-document chunk) | 'text' |
|
|
78
|
-
* | fallback | 'text' |
|
|
79
|
-
*
|
|
80
|
-
* `marketing-copy` has no auto-derivation path.
|
|
81
|
-
*/
|
|
82
|
-
export declare function deriveFormat(labels: string[], source?: string | null, body?: string | null): VoiceFormat;
|
|
83
65
|
//# sourceMappingURL=voice-corpus.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voice-corpus.d.ts","sourceRoot":"","sources":["../../src/lib/voice-corpus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,kBAAkB,8WAQ3B,CAAC;AAEL;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,yDAI1B,CAAC;AAEX
|
|
1
|
+
{"version":3,"file":"voice-corpus.d.ts","sourceRoot":"","sources":["../../src/lib/voice-corpus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,kBAAkB,8WAQ3B,CAAC;AAEL;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,yDAI1B,CAAC;AAEX;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,gFAOhB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAEtE"}
|
|
@@ -57,7 +57,10 @@ export const TAGGABLE_PRIMARY_LABELS = [
|
|
|
57
57
|
* Closed enum of writing-format values. One `:VoiceProfile` exists per
|
|
58
58
|
* `(accountId, userId, format)`. Adding a new value is a separate task.
|
|
59
59
|
*
|
|
60
|
-
*
|
|
60
|
+
* Format is an editorial classification set by the operator at tag time.
|
|
61
|
+
* The only auto-tagged path is `voice-ingest-session-text`, which hard-codes
|
|
62
|
+
* `format='text'` on `:Message` because chat turns are unambiguously text and
|
|
63
|
+
* the operator is not in the loop on session end.
|
|
61
64
|
*/
|
|
62
65
|
export const FORMAT_VALUES = [
|
|
63
66
|
"text",
|
|
@@ -79,39 +82,4 @@ export const FORMAT_VALUES = [
|
|
|
79
82
|
export function voiceCorpusWhereWithFormat(format) {
|
|
80
83
|
return `${VOICE_CORPUS_WHERE}\n AND n.format = $format`;
|
|
81
84
|
}
|
|
82
|
-
/**
|
|
83
|
-
* Derives the default writing format for a corpus node from its labels
|
|
84
|
-
* and properties. Used by ingest writers and `voice-tag-content` when the
|
|
85
|
-
* operator does not specify a format explicitly.
|
|
86
|
-
*
|
|
87
|
-
* Derivation rules (first match wins):
|
|
88
|
-
*
|
|
89
|
-
* | Node shape | format |
|
|
90
|
-
* |-------------------------------------------------------------|---------------|
|
|
91
|
-
* | :Message | 'text' |
|
|
92
|
-
* | :SocialPost | 'social-post' |
|
|
93
|
-
* | :KnowledgeDocument {source:'email'} | 'email' |
|
|
94
|
-
* | :ConversationArchive {source:'email'} | 'email' |
|
|
95
|
-
* | :KnowledgeDocument (non-email), body.length > 1500 | 'article' |
|
|
96
|
-
* | :KnowledgeDocument (non-email), body.length ≤ 1500 | 'note' |
|
|
97
|
-
* | :Section (conversation-document chunk) | 'text' |
|
|
98
|
-
* | fallback | 'text' |
|
|
99
|
-
*
|
|
100
|
-
* `marketing-copy` has no auto-derivation path.
|
|
101
|
-
*/
|
|
102
|
-
export function deriveFormat(labels, source, body) {
|
|
103
|
-
if (labels.includes("Message"))
|
|
104
|
-
return "text";
|
|
105
|
-
if (labels.includes("SocialPost"))
|
|
106
|
-
return "social-post";
|
|
107
|
-
if ((labels.includes("KnowledgeDocument") || labels.includes("ConversationArchive")) &&
|
|
108
|
-
source === "email") {
|
|
109
|
-
return "email";
|
|
110
|
-
}
|
|
111
|
-
if (labels.includes("KnowledgeDocument")) {
|
|
112
|
-
return (body?.length ?? 0) > 1500 ? "article" : "note";
|
|
113
|
-
}
|
|
114
|
-
// :Section (conversation-document chunk) and any other label → text.
|
|
115
|
-
return "text";
|
|
116
|
-
}
|
|
117
85
|
//# sourceMappingURL=voice-corpus.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voice-corpus.js","sourceRoot":"","sources":["../../src/lib/voice-corpus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;IAQ9B,CAAC;AAEL;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,mBAAmB;IACnB,SAAS;IACT,YAAY;CACJ,CAAC;AAEX
|
|
1
|
+
{"version":3,"file":"voice-corpus.js","sourceRoot":"","sources":["../../src/lib/voice-corpus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;IAQ9B,CAAC;AAEL;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,mBAAmB;IACnB,SAAS;IACT,YAAY;CACJ,CAAC;AAEX;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,MAAM;IACN,OAAO;IACP,aAAa;IACb,SAAS;IACT,gBAAgB;IAChB,MAAM;CACE,CAAC;AAIX;;;;;;;;GAQG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAmB;IAC5D,OAAO,GAAG,kBAAkB,4BAA4B,CAAC;AAC3D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voice-distil-profile.d.ts","sourceRoot":"","sources":["../../src/tools/voice-distil-profile.ts"],"names":[],"mappings":"AA2BA,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,wBAAwB,CAAC;AA0BhC,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,+EAA+E;IAC/E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EACP,iBAAiB,GACjB,QAAQ,GACR,cAAc,GACd,oBAAoB,GACpB,0BAA0B,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAClC,uFAAuF;IACvF,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;
|
|
1
|
+
{"version":3,"file":"voice-distil-profile.d.ts","sourceRoot":"","sources":["../../src/tools/voice-distil-profile.ts"],"names":[],"mappings":"AA2BA,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,wBAAwB,CAAC;AA0BhC,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,+EAA+E;IAC/E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EACP,iBAAiB,GACjB,QAAQ,GACR,cAAc,GACd,oBAAoB,GACpB,0BAA0B,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAClC,uFAAuF;IACvF,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AA2OD,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,wBAAwB,GAC/B,OAAO,CAAC,wBAAwB,GAAG,wBAAwB,EAAE,CAAC,CAmDhE"}
|
|
@@ -113,24 +113,51 @@ async function distilForFormat(params) {
|
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
// 4. Sample corpus bodies up to the char cap. Pick recent first.
|
|
116
|
+
//
|
|
117
|
+
// Body resolution (Task 471):
|
|
118
|
+
// - For a :KnowledgeDocument with HAS_SECTION children, concatenate
|
|
119
|
+
// child :Section bodies in `position` order — KD.body itself is
|
|
120
|
+
// null after the Task 465 server-slicing change.
|
|
121
|
+
// - Other labels (:Message, :SocialPost, :Section chat chunks) read
|
|
122
|
+
// n.body directly via the existing COALESCE fallback chain.
|
|
123
|
+
//
|
|
124
|
+
// `collect(s.body)` is null-skipping in Cypher, so KDs with no children
|
|
125
|
+
// produce sectionBodies = [] and fall through to the COALESCE branch
|
|
126
|
+
// correctly. The `usedSectionWalk` flag is returned for per-exemplar
|
|
127
|
+
// observability.
|
|
116
128
|
const sampled = await session.run(`MATCH (n)
|
|
117
129
|
WHERE ${corpusWhere}
|
|
118
130
|
WITH n, coalesce(n.dateSent, n.datePublished, n.firstMessageAt, n.dateCreated, n.createdAt) AS ts
|
|
119
131
|
OPTIONAL MATCH (parent:KnowledgeDocument)-[:HAS_SECTION]->(n)
|
|
120
132
|
WHERE 'Section' IN labels(n) AND parent.conversationIdentity IS NOT NULL
|
|
133
|
+
WITH n, ts, parent
|
|
134
|
+
OPTIONAL MATCH (n)-[:HAS_SECTION]->(s:Section)
|
|
135
|
+
WITH n, ts, parent, s ORDER BY s.position
|
|
136
|
+
WITH n, ts, parent, collect(s.body) AS sectionBodies
|
|
137
|
+
WITH n, ts, parent,
|
|
138
|
+
'KnowledgeDocument' IN labels(n) AND size(sectionBodies) > 0 AS usedSectionWalk,
|
|
139
|
+
CASE
|
|
140
|
+
WHEN 'KnowledgeDocument' IN labels(n) AND size(sectionBodies) > 0
|
|
141
|
+
THEN reduce(acc = '', b IN sectionBodies | acc + b + '\n\n')
|
|
142
|
+
ELSE coalesce(n.body, n.abstract, n.subject, n.title, n.summary, '')
|
|
143
|
+
END AS body
|
|
121
144
|
RETURN elementId(n) AS id,
|
|
122
145
|
labels(n) AS labels,
|
|
123
|
-
|
|
146
|
+
body,
|
|
147
|
+
usedSectionWalk,
|
|
124
148
|
parent.conversationIdentity IS NOT NULL AS isConversationChunk,
|
|
125
149
|
ts
|
|
126
150
|
ORDER BY ts IS NULL, ts DESC
|
|
127
151
|
LIMIT 500`, { accountId, format });
|
|
128
152
|
const samples = [];
|
|
153
|
+
let sectionWalkCount = 0;
|
|
154
|
+
let nBodyCount = 0;
|
|
129
155
|
let charBudget = SAMPLE_CHAR_CAP;
|
|
130
156
|
for (const r of sampled.records) {
|
|
131
157
|
const body = r.get("body") ?? "";
|
|
132
158
|
const labels = r.get("labels") ?? [];
|
|
133
159
|
const isConversationChunk = Boolean(r.get("isConversationChunk"));
|
|
160
|
+
const usedSectionWalk = Boolean(r.get("usedSectionWalk"));
|
|
134
161
|
const label = isConversationChunk
|
|
135
162
|
? "Conversation"
|
|
136
163
|
: (labels.find((l) => ["KnowledgeDocument", "Message", "SocialPost"].includes(l)) ?? labels[0] ?? "Unknown");
|
|
@@ -138,6 +165,10 @@ async function distilForFormat(params) {
|
|
|
138
165
|
continue;
|
|
139
166
|
const trimmed = body.length > charBudget ? body.slice(0, charBudget) : body;
|
|
140
167
|
samples.push({ id: r.get("id"), label, body: trimmed });
|
|
168
|
+
if (usedSectionWalk)
|
|
169
|
+
sectionWalkCount += 1;
|
|
170
|
+
else
|
|
171
|
+
nBodyCount += 1;
|
|
141
172
|
charBudget -= trimmed.length;
|
|
142
173
|
if (charBudget <= 0)
|
|
143
174
|
break;
|
|
@@ -152,7 +183,8 @@ async function distilForFormat(params) {
|
|
|
152
183
|
const mode = params.mode ?? "sample";
|
|
153
184
|
if (mode === "sample") {
|
|
154
185
|
process.stderr.write(`[voice-distil] adminUser=${userId} format=${format} mode=sample corpusSize=${corpusSize} ` +
|
|
155
|
-
`exemplars=${samples.length} feedbackEntries=${feedbackIntents.length}
|
|
186
|
+
`exemplars=${samples.length} feedbackEntries=${feedbackIntents.length} ` +
|
|
187
|
+
`sample-body-source=section-walk:${sectionWalkCount} n.body:${nBodyCount}\n`);
|
|
156
188
|
return {
|
|
157
189
|
profileId: prevProfileId,
|
|
158
190
|
corpusSize,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voice-distil-profile.js","sourceRoot":"","sources":["../../src/tools/voice-distil-profile.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"voice-distil-profile.js","sourceRoot":"","sources":["../../src/tools/voice-distil-profile.ts"],"names":[],"mappings":"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"}
|
package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-retrieve-conditioning.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voice-retrieve-conditioning.d.ts","sourceRoot":"","sources":["../../src/tools/voice-retrieve-conditioning.ts"],"names":[],"mappings":"AA2BA,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,wBAAwB,CAAC;AAMhC,MAAM,WAAW,+BAA+B;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf;;;WAGG;QACH,MAAM,EAAE,WAAW,CAAC;QACpB;;;;WAIG;QACH,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,+BAA+B;IAC9C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,aAAa,EAAE,CAAC;CAC5B;AAID,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,+BAA+B,GACtC,OAAO,CAAC,+BAA+B,CAAC,
|
|
1
|
+
{"version":3,"file":"voice-retrieve-conditioning.d.ts","sourceRoot":"","sources":["../../src/tools/voice-retrieve-conditioning.ts"],"names":[],"mappings":"AA2BA,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,wBAAwB,CAAC;AAMhC,MAAM,WAAW,+BAA+B;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf;;;WAGG;QACH,MAAM,EAAE,WAAW,CAAC;QACpB;;;;WAIG;QACH,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,+BAA+B;IAC9C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,aAAa,EAAE,CAAC;CAC5B;AAID,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,+BAA+B,GACtC,OAAO,CAAC,+BAA+B,CAAC,CAmH1C"}
|
|
@@ -49,26 +49,45 @@ export async function voiceRetrieveConditioning(params) {
|
|
|
49
49
|
RETURN p.styleCard AS styleCard`, { accountId, userId, format });
|
|
50
50
|
const styleCard = profile.records[0]?.get("styleCard") ?? null;
|
|
51
51
|
// 2. Exemplars — filtered to brief.format. Keyword-aware when topic is set.
|
|
52
|
+
//
|
|
53
|
+
// Body resolution (Task 471):
|
|
54
|
+
// - For :KnowledgeDocument with HAS_SECTION children, concatenate
|
|
55
|
+
// child :Section bodies in `position` order. KD.body is null after
|
|
56
|
+
// Task 465 server-slicing.
|
|
57
|
+
// - Other labels read n.body directly via the COALESCE fallback chain.
|
|
58
|
+
//
|
|
59
|
+
// The topic filter runs against the computed body, so a topic that
|
|
60
|
+
// appears only in n.summary (LLM abstract) no longer matches — by
|
|
61
|
+
// design: the corpus surfaces verbatim prose, not the abstract.
|
|
52
62
|
const topic = (brief.topic ?? "").trim();
|
|
53
63
|
const usesTopic = topic.length > 0;
|
|
64
|
+
const bodyComputeBlock = `WITH n, coalesce(n.dateSent, n.datePublished, n.firstMessageAt, n.dateCreated, n.createdAt) AS ts
|
|
65
|
+
OPTIONAL MATCH (n)-[:HAS_SECTION]->(s:Section)
|
|
66
|
+
WITH n, ts, s ORDER BY s.position
|
|
67
|
+
WITH n, ts, collect(s.body) AS sectionBodies
|
|
68
|
+
WITH n, ts, CASE
|
|
69
|
+
WHEN 'KnowledgeDocument' IN labels(n) AND size(sectionBodies) > 0
|
|
70
|
+
THEN reduce(acc = '', b IN sectionBodies | acc + b + '\n\n')
|
|
71
|
+
ELSE coalesce(n.body, n.abstract, n.subject, n.title, n.summary, '')
|
|
72
|
+
END AS body`;
|
|
54
73
|
const cypher = usesTopic
|
|
55
74
|
? `MATCH (n)
|
|
56
75
|
WHERE ${corpusWhere}
|
|
57
|
-
|
|
58
|
-
|
|
76
|
+
${bodyComputeBlock}
|
|
77
|
+
WHERE toLower(body) CONTAINS toLower($topic)
|
|
59
78
|
RETURN elementId(n) AS id,
|
|
60
79
|
labels(n) AS labels,
|
|
61
|
-
|
|
80
|
+
body,
|
|
62
81
|
coalesce(n.subject, n.title, n.name, '') AS source,
|
|
63
82
|
ts
|
|
64
83
|
ORDER BY ts IS NULL, ts DESC
|
|
65
84
|
LIMIT $k`
|
|
66
85
|
: `MATCH (n)
|
|
67
86
|
WHERE ${corpusWhere}
|
|
68
|
-
|
|
87
|
+
${bodyComputeBlock}
|
|
69
88
|
RETURN elementId(n) AS id,
|
|
70
89
|
labels(n) AS labels,
|
|
71
|
-
|
|
90
|
+
body,
|
|
72
91
|
coalesce(n.subject, n.title, n.name, '') AS source,
|
|
73
92
|
ts
|
|
74
93
|
ORDER BY ts IS NULL, ts DESC
|
package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-retrieve-conditioning.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voice-retrieve-conditioning.js","sourceRoot":"","sources":["../../src/tools/voice-retrieve-conditioning.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAEL,0BAA0B,GAE3B,MAAM,wBAAwB,CAAC;AAEhC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAC1C,MAAM,yBAAyB,GAAG,MAAM,CAAC;AACzC,MAAM,eAAe,GAAG,CAAC,CAAC;AAmC1B,MAAM,KAAK,GAAoC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;AAElF,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,MAAuC;IAEvC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAC5C,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAExC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC;IACvC,MAAM,CAAC,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,WAAW,GACf,MAAM,CAAC,WAAW;QAClB,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;IAC/E,MAAM,UAAU,GAAG,WAAW,GAAG,eAAe,CAAC;IACjD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,MAAM,WAAW,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;IAEvD,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,CAAC;QACH,sCAAsC;QACtC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B;;uCAEiC,EACjC,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAC9B,CAAC;QACF,MAAM,SAAS,GAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,WAAW,CAAmB,IAAI,IAAI,CAAC;QAElF,4EAA4E;QAC5E,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAEnC,MAAM,MAAM,GAAG,SAAS;YACtB,CAAC,CAAC;iBACS,WAAW
|
|
1
|
+
{"version":3,"file":"voice-retrieve-conditioning.js","sourceRoot":"","sources":["../../src/tools/voice-retrieve-conditioning.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,8 @@ export interface VoiceTagContentParams {
|
|
|
5
5
|
nodeIds: string[];
|
|
6
6
|
mode: AuthorshipMode;
|
|
7
7
|
accountId: string;
|
|
8
|
-
/**
|
|
9
|
-
format
|
|
8
|
+
/** Writing format (required). Editorial classification — operator-supplied. */
|
|
9
|
+
format: VoiceFormat;
|
|
10
10
|
}
|
|
11
11
|
export interface VoiceTagContentResult {
|
|
12
12
|
updated: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voice-tag-content.d.ts","sourceRoot":"","sources":["../../src/tools/voice-tag-content.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"voice-tag-content.d.ts","sourceRoot":"","sources":["../../src/tools/voice-tag-content.ts"],"names":[],"mappings":"AAeA,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,cAAc,GACtB,YAAY,GACZ,0BAA0B,GAC1B,0BAA0B,GAC1B,YAAY,GACZ,SAAS,CAAC;AAEd,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,cAAc,CAMvD,CAAC;AAEH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC,CAsFhC"}
|
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* voice-tag-content — set `authorshipMode`
|
|
3
|
-
*
|
|
2
|
+
* voice-tag-content — set `authorshipMode` and `format` on one or many
|
|
3
|
+
* content nodes.
|
|
4
4
|
*
|
|
5
5
|
* The tool routes through neo4j directly with an account-scoped MERGE so
|
|
6
6
|
* the operator can only mutate their own nodes. We do not go through
|
|
7
7
|
* `memory-update` because that tool re-embeds and re-validates on every
|
|
8
8
|
* call — overkill for a single-property authorship stamp.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* each node's labels and `source` property, matching the `deriveFormat()`
|
|
15
|
-
* rule table in voice-corpus.ts. This keeps tag and ingest in lockstep.
|
|
10
|
+
* `format` is an editorial classification only the operator can set; it is
|
|
11
|
+
* therefore required. The sole hard-coded exception lives in
|
|
12
|
+
* `voice-ingest-session-text`, which stamps `format='text'` on auto-ingested
|
|
13
|
+
* `:Message` rows where the operator is not in the loop (Task 471).
|
|
16
14
|
*/
|
|
17
15
|
import { getSession } from "../lib/neo4j.js";
|
|
18
16
|
import { TAGGABLE_PRIMARY_LABELS, FORMAT_VALUES, } from "../lib/voice-corpus.js";
|
|
@@ -23,17 +21,6 @@ export const AUTHORSHIP_MODES = new Set([
|
|
|
23
21
|
"agent-only",
|
|
24
22
|
"unknown",
|
|
25
23
|
]);
|
|
26
|
-
// Cypher CASE expression that mirrors deriveFormat() for in-query derivation.
|
|
27
|
-
// Used when the caller does not supply an explicit format.
|
|
28
|
-
const FORMAT_DERIVE_CASE = `CASE
|
|
29
|
-
WHEN 'Message' IN labels(n) THEN 'text'
|
|
30
|
-
WHEN 'SocialPost' IN labels(n) THEN 'social-post'
|
|
31
|
-
WHEN ('KnowledgeDocument' IN labels(n) OR 'ConversationArchive' IN labels(n))
|
|
32
|
-
AND n.source = 'email' THEN 'email'
|
|
33
|
-
WHEN 'KnowledgeDocument' IN labels(n) AND size(coalesce(n.body, '')) > 1500 THEN 'article'
|
|
34
|
-
WHEN 'KnowledgeDocument' IN labels(n) THEN 'note'
|
|
35
|
-
ELSE 'text'
|
|
36
|
-
END`;
|
|
37
24
|
export async function voiceTagContent(params) {
|
|
38
25
|
const { nodeIds, mode, accountId, format } = params;
|
|
39
26
|
if (!AUTHORSHIP_MODES.has(mode)) {
|
|
@@ -44,7 +31,10 @@ export async function voiceTagContent(params) {
|
|
|
44
31
|
if (!accountId) {
|
|
45
32
|
throw new Error("voice-tag-content: accountId is required");
|
|
46
33
|
}
|
|
47
|
-
if (format
|
|
34
|
+
if (format === undefined || format === null) {
|
|
35
|
+
throw new Error("voice-tag-content: format is required");
|
|
36
|
+
}
|
|
37
|
+
if (!FORMAT_VALUES.includes(format)) {
|
|
48
38
|
throw new Error(`voice-tag-content: invalid format '${format}'. Valid values: ${FORMAT_VALUES.join(", ")}`);
|
|
49
39
|
}
|
|
50
40
|
if (!Array.isArray(nodeIds) || nodeIds.length === 0) {
|
|
@@ -60,16 +50,12 @@ export async function voiceTagContent(params) {
|
|
|
60
50
|
for (let i = 0; i < nodeIds.length; i += BATCH) {
|
|
61
51
|
const batch = nodeIds.slice(i, i + BATCH);
|
|
62
52
|
const result = await session.run(
|
|
63
|
-
// Tag any of the
|
|
53
|
+
// Tag any of the three primary content labels, or a conversation-
|
|
64
54
|
// document :Section chunk (parent :KnowledgeDocument carries
|
|
65
55
|
// `conversationIdentity`). The EXISTS sub-pattern guards against
|
|
66
56
|
// accidentally tagging document-path :Section rows AND parent
|
|
67
57
|
// `:Conversation` / `:AdminConversation` nodes (which are not
|
|
68
58
|
// body-bearing content).
|
|
69
|
-
//
|
|
70
|
-
// Format is either the caller-supplied constant ($format is non-null)
|
|
71
|
-
// or derived per-node via the CASE expression that mirrors
|
|
72
|
-
// deriveFormat() in voice-corpus.ts.
|
|
73
59
|
`UNWIND $ids AS id
|
|
74
60
|
MATCH (n) WHERE elementId(n) = id AND n.accountId = $accountId
|
|
75
61
|
WITH n
|
|
@@ -80,13 +66,13 @@ export async function voiceTagContent(params) {
|
|
|
80
66
|
})
|
|
81
67
|
SET n.authorshipMode = $mode,
|
|
82
68
|
n.authorshipTaggedAt = $now,
|
|
83
|
-
n.format =
|
|
69
|
+
n.format = $format
|
|
84
70
|
RETURN elementId(n) AS id`, {
|
|
85
71
|
ids: batch,
|
|
86
72
|
accountId,
|
|
87
73
|
mode,
|
|
88
74
|
now,
|
|
89
|
-
format
|
|
75
|
+
format,
|
|
90
76
|
primaryLabels: [...TAGGABLE_PRIMARY_LABELS],
|
|
91
77
|
});
|
|
92
78
|
const matched = new Set(result.records.map((r) => r.get("id")));
|
|
@@ -102,7 +88,7 @@ export async function voiceTagContent(params) {
|
|
|
102
88
|
finally {
|
|
103
89
|
await session.close();
|
|
104
90
|
}
|
|
105
|
-
process.stderr.write(`[voice-tag] mode=${mode} format=${format
|
|
91
|
+
process.stderr.write(`[voice-tag] mode=${mode} format=${format} accountId=${accountId} updated=${updated} skipped=${nodeIds.length - updated}\n`);
|
|
106
92
|
return {
|
|
107
93
|
updated,
|
|
108
94
|
skipped: nodeIds.length - updated,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voice-tag-content.js","sourceRoot":"","sources":["../../src/tools/voice-tag-content.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"voice-tag-content.js","sourceRoot":"","sources":["../../src/tools/voice-tag-content.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,11 +11,10 @@
|
|
|
11
11
|
* 5. TAGGABLE_PRIMARY_LABELS covers the three content labels.
|
|
12
12
|
* 6. FORMAT_VALUES covers the six writing-format values (Task 462).
|
|
13
13
|
* 7. voiceCorpusWhereWithFormat() appends the format predicate.
|
|
14
|
-
* 8.
|
|
15
|
-
* 9. voice-retrieve-conditioning returns the graceful-degradation shape
|
|
14
|
+
* * 8. voice-retrieve-conditioning returns the graceful-degradation shape
|
|
16
15
|
* {styleCard: null, exemplars: []} on empty accountId/userId.
|
|
17
|
-
*
|
|
18
|
-
* on empty nodeIds.
|
|
16
|
+
* 9. voice-tag-content validates mode and format enums, requires format,
|
|
17
|
+
* and returns zero counts on empty nodeIds (with format supplied).
|
|
19
18
|
* 11. voice-ingest-session-text: extractOperatorTurns() extracts real turns
|
|
20
19
|
* and excludes slash commands, paste blocks, and system reminders.
|
|
21
20
|
*
|
|
@@ -164,44 +163,11 @@ await check("voiceCorpusWhereWithFormat appends format predicate", () => {
|
|
|
164
163
|
});
|
|
165
164
|
|
|
166
165
|
// ---------------------------------------------------------------------------
|
|
167
|
-
// 4. deriveFormat()
|
|
166
|
+
// 4. deriveFormat is gone (Task 471) — format is operator-supplied editorial.
|
|
168
167
|
// ---------------------------------------------------------------------------
|
|
169
|
-
console.log("\n--
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
await check("deriveFormat: :Message → text", () => {
|
|
173
|
-
assert.equal(deriveFormat(["Message"]), "text");
|
|
174
|
-
assert.equal(deriveFormat(["Message", "SomeOther"]), "text");
|
|
175
|
-
});
|
|
176
|
-
await check("deriveFormat: :SocialPost → social-post", () => {
|
|
177
|
-
assert.equal(deriveFormat(["SocialPost"]), "social-post");
|
|
178
|
-
});
|
|
179
|
-
await check("deriveFormat: :KnowledgeDocument {source:'email'} → email", () => {
|
|
180
|
-
assert.equal(deriveFormat(["KnowledgeDocument"], "email"), "email");
|
|
181
|
-
});
|
|
182
|
-
await check("deriveFormat: :ConversationArchive {source:'email'} → email", () => {
|
|
183
|
-
assert.equal(deriveFormat(["ConversationArchive"], "email"), "email");
|
|
184
|
-
});
|
|
185
|
-
await check("deriveFormat: :KnowledgeDocument body > 1500 → article", () => {
|
|
186
|
-
const longBody = "x".repeat(1501);
|
|
187
|
-
assert.equal(deriveFormat(["KnowledgeDocument"], null, longBody), "article");
|
|
188
|
-
assert.equal(deriveFormat(["KnowledgeDocument"], "other", longBody), "article");
|
|
189
|
-
});
|
|
190
|
-
await check("deriveFormat: :KnowledgeDocument body = 1500 → note", () => {
|
|
191
|
-
const borderBody = "x".repeat(1500);
|
|
192
|
-
assert.equal(deriveFormat(["KnowledgeDocument"], null, borderBody), "note");
|
|
193
|
-
});
|
|
194
|
-
await check("deriveFormat: :KnowledgeDocument body ≤ 1500 → note", () => {
|
|
195
|
-
const shortBody = "x".repeat(100);
|
|
196
|
-
assert.equal(deriveFormat(["KnowledgeDocument"], null, shortBody), "note");
|
|
197
|
-
assert.equal(deriveFormat(["KnowledgeDocument"], undefined, undefined), "note");
|
|
198
|
-
});
|
|
199
|
-
await check("deriveFormat: :Section (conversation chunk) → text", () => {
|
|
200
|
-
assert.equal(deriveFormat(["Section"]), "text");
|
|
201
|
-
});
|
|
202
|
-
await check("deriveFormat: unknown label → text (fallback)", () => {
|
|
203
|
-
assert.equal(deriveFormat(["Unknown"]), "text");
|
|
204
|
-
assert.equal(deriveFormat([]), "text");
|
|
168
|
+
console.log("\n-- format is operator-supplied --");
|
|
169
|
+
await check("deriveFormat export is removed from voice-corpus", () => {
|
|
170
|
+
assert.equal(corpusMod.deriveFormat, undefined);
|
|
205
171
|
});
|
|
206
172
|
|
|
207
173
|
// ---------------------------------------------------------------------------
|
|
@@ -242,6 +208,7 @@ await check("voice-tag-content rejects an invalid mode", async () => {
|
|
|
242
208
|
nodeIds: ["x"],
|
|
243
209
|
mode: "not-a-mode",
|
|
244
210
|
accountId: "acc",
|
|
211
|
+
format: "text",
|
|
245
212
|
}),
|
|
246
213
|
/invalid authorshipMode/,
|
|
247
214
|
);
|
|
@@ -265,15 +232,28 @@ await check("voice-tag-content rejects empty accountId", async () => {
|
|
|
265
232
|
nodeIds: ["x"],
|
|
266
233
|
mode: "human-only",
|
|
267
234
|
accountId: "",
|
|
235
|
+
format: "text",
|
|
268
236
|
}),
|
|
269
237
|
/accountId is required/,
|
|
270
238
|
);
|
|
271
239
|
});
|
|
240
|
+
await check("voice-tag-content rejects missing format", async () => {
|
|
241
|
+
await assert.rejects(
|
|
242
|
+
() =>
|
|
243
|
+
tagMod.voiceTagContent({
|
|
244
|
+
nodeIds: ["x"],
|
|
245
|
+
mode: "human-only",
|
|
246
|
+
accountId: "acc",
|
|
247
|
+
}),
|
|
248
|
+
/format is required/,
|
|
249
|
+
);
|
|
250
|
+
});
|
|
272
251
|
await check("voice-tag-content returns zero counts on empty nodeIds (no DB hit)", async () => {
|
|
273
252
|
const result = await tagMod.voiceTagContent({
|
|
274
253
|
nodeIds: [],
|
|
275
254
|
mode: "human-only",
|
|
276
255
|
accountId: "acc",
|
|
256
|
+
format: "text",
|
|
277
257
|
});
|
|
278
258
|
assert.deepEqual(result, { updated: 0, skipped: 0, skippedReasons: {} });
|
|
279
259
|
});
|