huly-mcp-sdk 0.4.0 → 0.5.0
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/README.md +23 -2
- package/dist/schemas.d.ts +10 -0
- package/dist/schemas.js +5 -1
- package/dist/schemas.js.map +1 -1
- package/dist/server.js +1 -0
- package/dist/server.js.map +1 -1
- package/dist/tools/documents.d.ts +9 -0
- package/dist/tools/documents.js +152 -1
- package/dist/tools/documents.js.map +1 -1
- package/dist/tools/issues.js +4 -4
- package/dist/tools/issues.js.map +1 -1
- package/dist/tools/projects.js +2 -2
- package/dist/tools/projects.js.map +1 -1
- package/package.json +1 -1
- package/scripts/clean-comments.mjs +70 -0
- package/scripts/link-docs-to-issues.mjs +73 -0
- package/scripts/populate-docs.mjs +505 -0
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ Connects **Claude Desktop** (and any [MCP](https://modelcontextprotocol.io)-comp
|
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
## Tools (
|
|
9
|
+
## Tools (32 total)
|
|
10
10
|
|
|
11
11
|
| Category | Tool | Description |
|
|
12
12
|
|----------|------|-------------|
|
|
@@ -37,6 +37,7 @@ Connects **Claude Desktop** (and any [MCP](https://modelcontextprotocol.io)-comp
|
|
|
37
37
|
| | `list_documents` | List documents in a teamspace |
|
|
38
38
|
| | `get_document` | Get document metadata + content (see [Document content](#document-content)) |
|
|
39
39
|
| | `create_document` | Create a new document in a teamspace |
|
|
40
|
+
| | `update_document` | Set document content from Markdown — renders Mermaid diagrams natively (see [Document content](#document-content)) |
|
|
40
41
|
| **Search** | `search_issues` | Full-text search across all issues |
|
|
41
42
|
|
|
42
43
|
---
|
|
@@ -92,6 +93,7 @@ Restart Claude Desktop after saving.
|
|
|
92
93
|
> Then use `"command": "node", "args": ["/absolute/path/to/huly-mcp/dist/index.js"]` in your config.
|
|
93
94
|
|
|
94
95
|
---
|
|
96
|
+
<img width="932" height="401" alt="image" src="https://github.com/user-attachments/assets/0f9d9a74-ca1e-4884-bd6a-918c0fb8ddbd" />
|
|
95
97
|
|
|
96
98
|
## Example Prompts
|
|
97
99
|
|
|
@@ -124,12 +126,31 @@ Restart Claude Desktop after saving.
|
|
|
124
126
|
- *"List all documents in the Engineering teamspace"*
|
|
125
127
|
- *"Create a document called 'API Design' in the Engineering teamspace"*
|
|
126
128
|
- *"Get the content of document abc123"*
|
|
129
|
+
- *"Update document abc123 with this Markdown content: ..."*
|
|
130
|
+
- *"Add a Mermaid flowchart to the EP1 document"*
|
|
127
131
|
|
|
128
132
|
---
|
|
129
133
|
|
|
130
134
|
## Document Content
|
|
131
135
|
|
|
132
|
-
Document content in Huly is stored in a collaborative editing layer (not inline in the database). `get_document` always returns full metadata. To also fetch and read the **text content**, set the optional `HULY_FRONT_URL` env var
|
|
136
|
+
Document content in Huly is stored in a collaborative editing layer (not inline in the database). `get_document` always returns full metadata. To also fetch and read the **text content**, set the optional `HULY_FRONT_URL` env var.
|
|
137
|
+
|
|
138
|
+
### Writing document content with `update_document`
|
|
139
|
+
|
|
140
|
+
`update_document` accepts a `documentId` and a `markdown` string and writes rich content directly to the document — no manual editing required. Supported Markdown elements:
|
|
141
|
+
|
|
142
|
+
- Headings (`#`, `##`, `###`)
|
|
143
|
+
- Paragraphs and inline **bold** / `code`
|
|
144
|
+
- Fenced code blocks — ` ```mermaid ` blocks are stored using Huly's native Mermaid node type, so diagrams render as interactive visuals in the editor
|
|
145
|
+
- Bullet lists
|
|
146
|
+
- Pipe tables
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
update_document({
|
|
150
|
+
documentId: "abc123",
|
|
151
|
+
markdown: "# My Doc\n\n```mermaid\nflowchart TD\n A --> B\n```"
|
|
152
|
+
})
|
|
153
|
+
```
|
|
133
154
|
|
|
134
155
|
```json
|
|
135
156
|
"env": {
|
package/dist/schemas.d.ts
CHANGED
|
@@ -279,3 +279,13 @@ export declare const LogTimeSchema: z.ZodObject<{
|
|
|
279
279
|
hours: number;
|
|
280
280
|
description?: string | undefined;
|
|
281
281
|
}>;
|
|
282
|
+
export declare const UpdateDocumentSchema: z.ZodObject<{
|
|
283
|
+
documentId: z.ZodString;
|
|
284
|
+
markdown: z.ZodString;
|
|
285
|
+
}, "strip", z.ZodTypeAny, {
|
|
286
|
+
documentId: string;
|
|
287
|
+
markdown: string;
|
|
288
|
+
}, {
|
|
289
|
+
documentId: string;
|
|
290
|
+
markdown: string;
|
|
291
|
+
}>;
|
package/dist/schemas.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LogTimeSchema = exports.ListCommentsSchema = exports.SetParentSchema = exports.AddBlockedBySchema = exports.AddRelationSchema = exports.RemoveLabelSchema = exports.AddLabelSchema = exports.CreateLabelSchema = exports.ListLabelsSchema = exports.SearchIssuesSchema = exports.CreateDocumentSchema = exports.GetDocumentSchema = exports.ListDocumentsSchema = exports.CreateProjectSchema = exports.CreateComponentSchema = exports.ListComponentsSchema = exports.CreateMilestoneSchema = exports.ListMilestonesSchema = exports.AddCommentSchema = exports.UpdateIssueSchema = exports.DeleteIssueSchema = exports.CreateIssueSchema = exports.GetIssueSchema = exports.ListIssuesSchema = exports.GetProjectSchema = void 0;
|
|
3
|
+
exports.UpdateDocumentSchema = exports.LogTimeSchema = exports.ListCommentsSchema = exports.SetParentSchema = exports.AddBlockedBySchema = exports.AddRelationSchema = exports.RemoveLabelSchema = exports.AddLabelSchema = exports.CreateLabelSchema = exports.ListLabelsSchema = exports.SearchIssuesSchema = exports.CreateDocumentSchema = exports.GetDocumentSchema = exports.ListDocumentsSchema = exports.CreateProjectSchema = exports.CreateComponentSchema = exports.ListComponentsSchema = exports.CreateMilestoneSchema = exports.ListMilestonesSchema = exports.AddCommentSchema = exports.UpdateIssueSchema = exports.DeleteIssueSchema = exports.CreateIssueSchema = exports.GetIssueSchema = exports.ListIssuesSchema = exports.GetProjectSchema = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const PriorityEnum = zod_1.z.enum(['NoPriority', 'Urgent', 'High', 'Medium', 'Low']);
|
|
6
6
|
exports.GetProjectSchema = zod_1.z.object({
|
|
@@ -116,4 +116,8 @@ exports.LogTimeSchema = zod_1.z.object({
|
|
|
116
116
|
hours: zod_1.z.number().positive().describe('Hours spent (e.g. 2.5)'),
|
|
117
117
|
description: zod_1.z.string().optional().describe('What was done (optional note)')
|
|
118
118
|
});
|
|
119
|
+
exports.UpdateDocumentSchema = zod_1.z.object({
|
|
120
|
+
documentId: zod_1.z.string().describe('Document _id from list_documents or create_document'),
|
|
121
|
+
markdown: zod_1.z.string().min(1).describe('Markdown content to set as the document body')
|
|
122
|
+
});
|
|
119
123
|
//# sourceMappingURL=schemas.js.map
|
package/dist/schemas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
|
@@ -53,6 +53,7 @@ function createServer() {
|
|
|
53
53
|
server.tool('list_documents', 'List documents in a teamspace', schemas_1.ListDocumentsSchema.shape, documents_1.listDocuments);
|
|
54
54
|
server.tool('get_document', 'Get metadata and content of a document (content requires HULY_FRONT_URL env)', schemas_1.GetDocumentSchema.shape, documents_1.getDocument);
|
|
55
55
|
server.tool('create_document', 'Create a new document in a teamspace', schemas_1.CreateDocumentSchema.shape, documents_1.createDocument);
|
|
56
|
+
server.tool('update_document', 'Set or replace the content of a document from Markdown (supports headings, paragraphs, code blocks, tables, bullet lists)', schemas_1.UpdateDocumentSchema.shape, documents_1.updateDocument);
|
|
56
57
|
// Search
|
|
57
58
|
server.tool('search_issues', 'Full-text search across all issues', schemas_1.SearchIssuesSchema.shape, search_1.searchIssues);
|
|
58
59
|
return server;
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;AAyCA,oCAuDC;AAhGD,oEAAmE;AACnE,+CAA0E;AAC1E,2CAA4F;AAC5F,+CAA2D;AAC3D,+CAA0C;AAC1C,6CAA6C;AAC7C,mDAAoE;AACpE,iDAA8G;AAC9G,2CAA6C;AAC7C,2CAA+E;AAC/E,iDAAwE;AACxE,mDAAoE;AACpE,uCA2BkB;AAElB,SAAgB,YAAY;IAC1B,MAAM,MAAM,GAAG,IAAI,kBAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;IAEpE,WAAW;IACX,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,yCAAyC,EAAE,EAAE,EAAE,uBAAY,CAAC,CAAA;IACzF,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,+CAA+C,EAAE,0BAAgB,CAAC,KAAK,EAAE,qBAAU,CAAC,CAAA;IAC/G,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,gEAAgE,EAAE,6BAAmB,CAAC,KAAK,EAAE,wBAAa,CAAC,CAAA;IAEzI,SAAS;IACT,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,gDAAgD,EAAE,0BAAgB,CAAC,KAAK,EAAE,mBAAU,CAAC,CAAA;IAChH,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,8DAA8D,EAAE,wBAAc,CAAC,KAAK,EAAE,iBAAQ,CAAC,CAAA;IACxH,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,iCAAiC,EAAE,2BAAiB,CAAC,KAAK,EAAE,oBAAW,CAAC,CAAA;IACpG,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,8FAA8F,EAAE,2BAAiB,CAAC,KAAK,EAAE,oBAAW,CAAC,CAAA;IACjK,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,6DAA6D,EAAE,2BAAiB,CAAC,KAAK,EAAE,oBAAW,CAAC,CAAA;IAEhI,WAAW;IACX,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,2BAA2B,EAAE,0BAAgB,CAAC,KAAK,EAAE,qBAAU,CAAC,CAAA;IAC3F,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,+BAA+B,EAAE,4BAAkB,CAAC,KAAK,EAAE,uBAAY,CAAC,CAAA;IAErG,gBAAgB;IAChB,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,6BAA6B,EAAE,uBAAa,CAAC,KAAK,EAAE,kBAAO,CAAC,CAAA;IAEpF,SAAS;IACT,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,kCAAkC,EAAE,0BAAgB,CAAC,KAAK,EAAE,mBAAU,CAAC,CAAA;IAClG,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,+CAA+C,EAAE,2BAAiB,CAAC,KAAK,EAAE,oBAAW,CAAC,CAAA;IAClH,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,uEAAuE,EAAE,wBAAc,CAAC,KAAK,EAAE,iBAAQ,CAAC,CAAA;IACjI,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,8BAA8B,EAAE,2BAAiB,CAAC,KAAK,EAAE,oBAAW,CAAC,CAAA;IAEjG,YAAY;IACZ,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,0DAA0D,EAAE,2BAAiB,CAAC,KAAK,EAAE,uBAAW,CAAC,CAAA;IAC7H,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,2CAA2C,EAAE,4BAAkB,CAAC,KAAK,EAAE,wBAAY,CAAC,CAAA;IAClH,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,4CAA4C,EAAE,yBAAe,CAAC,KAAK,EAAE,qBAAS,CAAC,CAAA;IAEzG,UAAU;IACV,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,mCAAmC,EAAE,EAAE,EAAE,qBAAW,CAAC,CAAA;IAEjF,aAAa;IACb,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,+BAA+B,EAAE,8BAAoB,CAAC,KAAK,EAAE,2BAAc,CAAC,CAAA;IAC3G,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,wDAAwD,EAAE,+BAAqB,CAAC,KAAK,EAAE,4BAAe,CAAC,CAAA;IAEvI,aAAa;IACb,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,0CAA0C,EAAE,8BAAoB,CAAC,KAAK,EAAE,2BAAc,CAAC,CAAA;IACtH,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,qCAAqC,EAAE,+BAAqB,CAAC,KAAK,EAAE,4BAAe,CAAC,CAAA;IAEpH,YAAY;IACZ,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,+CAA+C,EAAE,EAAE,EAAE,0BAAc,CAAC,CAAA;IACnG,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,+BAA+B,EAAE,6BAAmB,CAAC,KAAK,EAAE,yBAAa,CAAC,CAAA;IACxG,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,8EAA8E,EAAE,2BAAiB,CAAC,KAAK,EAAE,uBAAW,CAAC,CAAA;IACjJ,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,sCAAsC,EAAE,8BAAoB,CAAC,KAAK,EAAE,0BAAc,CAAC,CAAA;IAClH,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,2HAA2H,EAAE,8BAAoB,CAAC,KAAK,EAAE,0BAAc,CAAC,CAAA;IAEvM,SAAS;IACT,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,oCAAoC,EAAE,4BAAkB,CAAC,KAAK,EAAE,qBAAY,CAAC,CAAA;IAE1G,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -30,3 +30,12 @@ export declare const createDocument: (args: {
|
|
|
30
30
|
text: string;
|
|
31
31
|
}>;
|
|
32
32
|
}>;
|
|
33
|
+
export declare const updateDocument: (args: {
|
|
34
|
+
documentId: string;
|
|
35
|
+
markdown: string;
|
|
36
|
+
}) => Promise<{
|
|
37
|
+
content: Array<{
|
|
38
|
+
type: "text";
|
|
39
|
+
text: string;
|
|
40
|
+
}>;
|
|
41
|
+
}>;
|
package/dist/tools/documents.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.createDocument = exports.getDocument = exports.listDocuments = exports.listTeamspaces = void 0;
|
|
6
|
+
exports.updateDocument = exports.createDocument = exports.getDocument = exports.listDocuments = exports.listTeamspaces = void 0;
|
|
7
7
|
const document_1 = __importDefault(require("@hcengineering/document"));
|
|
8
8
|
const core_1 = require("@hcengineering/core");
|
|
9
9
|
const document_2 = require("@hcengineering/document");
|
|
@@ -111,6 +111,157 @@ exports.createDocument = (0, errors_1.wrapToolHandler)(async (args) => {
|
|
|
111
111
|
}, docId);
|
|
112
112
|
return `✅ Document **"${args.title}"** created (id: \`${docId}\`) in teamspace "${teamspace.name}".\nOpen it in Huly to add content via the editor.`;
|
|
113
113
|
});
|
|
114
|
+
const DATALAKE_URL = 'https://dl-eu.huly.app';
|
|
115
|
+
exports.updateDocument = (0, errors_1.wrapToolHandler)(async (args) => {
|
|
116
|
+
const client = await (0, connection_1.getConnection)();
|
|
117
|
+
const { wsToken, workspaceUuid } = await (0, connection_1.getWorkspaceInfo)();
|
|
118
|
+
const doc = await client.findOne(document_1.default.class.Document, { _id: args.documentId });
|
|
119
|
+
if (doc == null)
|
|
120
|
+
throw new Error(`Document '${args.documentId}' not found.`);
|
|
121
|
+
// Convert markdown to ProseMirror JSON
|
|
122
|
+
const prosemirror = markdownToProseMirror(args.markdown);
|
|
123
|
+
const content = JSON.stringify(prosemirror);
|
|
124
|
+
// Upload to datalake
|
|
125
|
+
const blobId = `${args.documentId}-content-${Date.now()}`;
|
|
126
|
+
const form = new FormData();
|
|
127
|
+
form.append('file', new Blob([content], { type: 'application/json' }), blobId);
|
|
128
|
+
const uploadUrl = `${DATALAKE_URL}/upload/form-data/${workspaceUuid}`;
|
|
129
|
+
const uploadRes = await fetch(uploadUrl, {
|
|
130
|
+
method: 'POST',
|
|
131
|
+
headers: { Authorization: `Bearer ${wsToken}` },
|
|
132
|
+
body: form
|
|
133
|
+
});
|
|
134
|
+
if (!uploadRes.ok) {
|
|
135
|
+
const body = await uploadRes.text().catch(() => '');
|
|
136
|
+
throw new Error(`Datalake upload failed (${uploadRes.status}): ${body}`);
|
|
137
|
+
}
|
|
138
|
+
const uploadJson = await uploadRes.json();
|
|
139
|
+
const uploadedId = uploadJson[0]?.id ?? blobId;
|
|
140
|
+
// Update document content ref
|
|
141
|
+
await client.updateDoc(document_1.default.class.Document, doc.space, doc._id, { content: uploadedId });
|
|
142
|
+
return `✅ Document **"${doc.title}"** updated (blob: \`${uploadedId}\`).`;
|
|
143
|
+
});
|
|
144
|
+
function markdownToProseMirror(md) {
|
|
145
|
+
const lines = md.split('\n');
|
|
146
|
+
const nodes = [];
|
|
147
|
+
let i = 0;
|
|
148
|
+
while (i < lines.length) {
|
|
149
|
+
const line = lines[i];
|
|
150
|
+
// Fenced code block
|
|
151
|
+
if (line.startsWith('```')) {
|
|
152
|
+
const lang = line.slice(3).trim();
|
|
153
|
+
const codeLines = [];
|
|
154
|
+
i++;
|
|
155
|
+
while (i < lines.length && !lines[i].startsWith('```')) {
|
|
156
|
+
codeLines.push(lines[i]);
|
|
157
|
+
i++;
|
|
158
|
+
}
|
|
159
|
+
i++; // skip closing ```
|
|
160
|
+
// Use Huly's native 'mermaid' node type so diagrams render properly
|
|
161
|
+
const nodeType = lang === 'mermaid' ? 'mermaid' : 'codeBlock';
|
|
162
|
+
nodes.push({
|
|
163
|
+
type: nodeType,
|
|
164
|
+
attrs: { language: lang !== '' ? lang : null },
|
|
165
|
+
content: [{ type: 'text', text: codeLines.join('\n') }]
|
|
166
|
+
});
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
// Heading
|
|
170
|
+
const headingMatch = line.match(/^(#{1,6})\s+(.+)$/);
|
|
171
|
+
if (headingMatch != null) {
|
|
172
|
+
nodes.push({
|
|
173
|
+
type: 'heading',
|
|
174
|
+
attrs: { level: headingMatch[1].length },
|
|
175
|
+
content: parseInline(headingMatch[2])
|
|
176
|
+
});
|
|
177
|
+
i++;
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
// Table (Markdown pipe table)
|
|
181
|
+
if (line.includes('|') && line.trim().startsWith('|')) {
|
|
182
|
+
const tableRows = [];
|
|
183
|
+
while (i < lines.length && lines[i].includes('|') && lines[i].trim().startsWith('|')) {
|
|
184
|
+
const row = lines[i].trim().replace(/^\||\|$/g, '').split('|').map((c) => c.trim());
|
|
185
|
+
// Skip separator rows like |---|---|
|
|
186
|
+
if (!row.every((c) => /^[-:]+$/.test(c))) {
|
|
187
|
+
tableRows.push(row);
|
|
188
|
+
}
|
|
189
|
+
i++;
|
|
190
|
+
}
|
|
191
|
+
if (tableRows.length > 0) {
|
|
192
|
+
nodes.push(buildTable(tableRows));
|
|
193
|
+
}
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
// Bullet list
|
|
197
|
+
if (/^(\s*[-*+])\s/.test(line)) {
|
|
198
|
+
const items = [];
|
|
199
|
+
while (i < lines.length && /^(\s*[-*+])\s/.test(lines[i])) {
|
|
200
|
+
const text = lines[i].replace(/^\s*[-*+]\s/, '');
|
|
201
|
+
items.push({
|
|
202
|
+
type: 'listItem',
|
|
203
|
+
content: [{ type: 'paragraph', content: parseInline(text) }]
|
|
204
|
+
});
|
|
205
|
+
i++;
|
|
206
|
+
}
|
|
207
|
+
nodes.push({ type: 'bulletList', content: items });
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
// Blank line → skip
|
|
211
|
+
if (line.trim() === '') {
|
|
212
|
+
i++;
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
// Default paragraph
|
|
216
|
+
nodes.push({ type: 'paragraph', content: parseInline(line) });
|
|
217
|
+
i++;
|
|
218
|
+
}
|
|
219
|
+
if (nodes.length === 0) {
|
|
220
|
+
nodes.push({ type: 'paragraph', content: [] });
|
|
221
|
+
}
|
|
222
|
+
return { type: 'doc', content: nodes };
|
|
223
|
+
}
|
|
224
|
+
function parseInline(text) {
|
|
225
|
+
const nodes = [];
|
|
226
|
+
// Handle **bold**, `code`, plain text
|
|
227
|
+
const re = /\*\*(.+?)\*\*|`(.+?)`|([^`*]+)/g;
|
|
228
|
+
let m;
|
|
229
|
+
while ((m = re.exec(text)) !== null) {
|
|
230
|
+
if (m[1] != null) {
|
|
231
|
+
nodes.push({ type: 'text', text: m[1], marks: [{ type: 'bold' }] });
|
|
232
|
+
}
|
|
233
|
+
else if (m[2] != null) {
|
|
234
|
+
nodes.push({ type: 'text', text: m[2], marks: [{ type: 'code' }] });
|
|
235
|
+
}
|
|
236
|
+
else if (m[3] != null && m[3].length > 0) {
|
|
237
|
+
nodes.push({ type: 'text', text: m[3] });
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return nodes.length > 0 ? nodes : [{ type: 'text', text }];
|
|
241
|
+
}
|
|
242
|
+
function buildTable(rows) {
|
|
243
|
+
const [headerRow, ...bodyRows] = rows;
|
|
244
|
+
const tableRows = [];
|
|
245
|
+
if (headerRow != null) {
|
|
246
|
+
tableRows.push({
|
|
247
|
+
type: 'tableRow',
|
|
248
|
+
content: headerRow.map((cell) => ({
|
|
249
|
+
type: 'tableHeader',
|
|
250
|
+
content: [{ type: 'paragraph', content: parseInline(cell) }]
|
|
251
|
+
}))
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
for (const row of bodyRows) {
|
|
255
|
+
tableRows.push({
|
|
256
|
+
type: 'tableRow',
|
|
257
|
+
content: row.map((cell) => ({
|
|
258
|
+
type: 'tableCell',
|
|
259
|
+
content: [{ type: 'paragraph', content: parseInline(cell) }]
|
|
260
|
+
}))
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
return { type: 'table', content: tableRows };
|
|
264
|
+
}
|
|
114
265
|
// Helper: extract plain text from Huly's ProseMirror JSON markup
|
|
115
266
|
function extractText(node) {
|
|
116
267
|
if (typeof node === 'string')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documents.js","sourceRoot":"","sources":["../../src/tools/documents.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"documents.js","sourceRoot":"","sources":["../../src/tools/documents.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/issues.js
CHANGED
|
@@ -52,7 +52,7 @@ exports.listIssues = (0, errors_1.wrapToolHandler)(async (args) => {
|
|
|
52
52
|
throw new Error(`Project '${args.projectIdentifier}' not found.`);
|
|
53
53
|
const query = { space: project._id };
|
|
54
54
|
if (args.status != null) {
|
|
55
|
-
const status = await client.findOne(tracker_1.default.class.IssueStatus, {
|
|
55
|
+
const status = await client.findOne(tracker_1.default.class.IssueStatus, { name: args.status });
|
|
56
56
|
if (status == null)
|
|
57
57
|
throw new Error(`Status '${args.status}' not found in project '${args.projectIdentifier}'.`);
|
|
58
58
|
query.status = status._id;
|
|
@@ -64,7 +64,7 @@ exports.listIssues = (0, errors_1.wrapToolHandler)(async (args) => {
|
|
|
64
64
|
if (issues.length === 0)
|
|
65
65
|
return `No issues found in project ${args.projectIdentifier}.`;
|
|
66
66
|
// Resolve all statuses in one call
|
|
67
|
-
const statuses = await client.findAll(tracker_1.default.class.IssueStatus, {
|
|
67
|
+
const statuses = await client.findAll(tracker_1.default.class.IssueStatus, {});
|
|
68
68
|
const statusMap = new Map(statuses.map((s) => [s._id, s.name]));
|
|
69
69
|
const lines = issues.map((issue) => {
|
|
70
70
|
const statusName = statusMap.get(issue.status) ?? 'Unknown';
|
|
@@ -101,7 +101,7 @@ exports.createIssue = (0, errors_1.wrapToolHandler)(async (args) => {
|
|
|
101
101
|
const issueNumber = incResult?.object?.sequence ?? project.sequence + 1;
|
|
102
102
|
const identifier = `${project.identifier}-${issueNumber}`;
|
|
103
103
|
// 3. Resolve status
|
|
104
|
-
const statuses = await client.findAll(tracker_1.default.class.IssueStatus, {
|
|
104
|
+
const statuses = await client.findAll(tracker_1.default.class.IssueStatus, {});
|
|
105
105
|
const status = args.statusName != null
|
|
106
106
|
? (statuses.find((s) => s.name === args.statusName) ?? statuses[0])
|
|
107
107
|
: (project.defaultIssueStatus != null
|
|
@@ -160,7 +160,7 @@ exports.updateIssue = (0, errors_1.wrapToolHandler)(async (args) => {
|
|
|
160
160
|
if (args.title != null)
|
|
161
161
|
updates.title = args.title;
|
|
162
162
|
if (args.statusName != null) {
|
|
163
|
-
const status = await client.findOne(tracker_1.default.class.IssueStatus, {
|
|
163
|
+
const status = await client.findOne(tracker_1.default.class.IssueStatus, { name: args.statusName });
|
|
164
164
|
if (status == null)
|
|
165
165
|
throw new Error(`Status '${args.statusName}' not found.`);
|
|
166
166
|
updates.status = status._id;
|
package/dist/tools/issues.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/tools/issues.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kEAA2E;AAC3E,+DAAsC;AACtC,qEAA4C;AAC5C,8CAA6F;AAE7F,8CAA8C;AAC9C,8CAA6C;AAC7C,4CAAiD;AACjD,4CAA2D;AAU9C,QAAA,UAAU,GAAG,IAAA,wBAAe,EAAmC,KAAK,EAAE,IAAI,EAAE,EAAE;IACzF,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAa,GAAE,CAAA;IACpC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,iBAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAA;IACnG,IAAI,OAAO,IAAI,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,iBAAiB,cAAc,CAAC,CAAA;IAEtF,MAAM,KAAK,GAA4B,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,CAAA;IAE7D,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,iBAAO,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/tools/issues.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/projects.js
CHANGED
|
@@ -23,7 +23,7 @@ exports.getProject = (0, errors_1.wrapToolHandler)(async (args) => {
|
|
|
23
23
|
const project = await client.findOne(tracker_1.default.class.Project, { identifier: args.identifier });
|
|
24
24
|
if (project == null)
|
|
25
25
|
throw new Error(`Project '${args.identifier}' not found.`);
|
|
26
|
-
const statuses = await client.findAll(tracker_1.default.class.IssueStatus, {
|
|
26
|
+
const statuses = await client.findAll(tracker_1.default.class.IssueStatus, {});
|
|
27
27
|
const statusList = statuses.map((s) => ` - ${s.name}`).join('\n');
|
|
28
28
|
return [
|
|
29
29
|
`## Project: ${project.identifier}`,
|
|
@@ -55,7 +55,7 @@ exports.createProject = (0, errors_1.wrapToolHandler)(async (args) => {
|
|
|
55
55
|
defaultTimeReportDay: 'CurrentWorkDay',
|
|
56
56
|
defaultIssueStatus: undefined,
|
|
57
57
|
type: projectType._id,
|
|
58
|
-
members: [],
|
|
58
|
+
members: [client.user],
|
|
59
59
|
archived: false,
|
|
60
60
|
private: false
|
|
61
61
|
}, projectId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":";;;;;;AAAA,qEAA4C;AAC5C,+DAAsC;AACtC,+DAAsC;AACtC,8CAA0D;AAE1D,8CAA6C;AAC7C,4CAAiD;AAIpC,QAAA,YAAY,GAAG,IAAA,wBAAe,EAAwB,KAAK,IAAI,EAAE;IAC5E,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAa,GAAE,CAAA;IACpC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,iBAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;IAEhE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,sCAAsC,CAAA;IAExE,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/B,OAAO,CAAC,CAAC,UAAU,QAAQ,CAAC,CAAC,IAAI,IAAI,WAAW,GAAG,CAAC,CAAC,WAAW,IAAI,IAAI,IAAI,CAAC,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACjI,CAAA;IACD,OAAO,gBAAgB,QAAQ,CAAC,MAAM,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;AAClE,CAAC,CAAC,CAAA;AAEW,QAAA,UAAU,GAAG,IAAA,wBAAe,EAAmC,KAAK,EAAE,IAAI,EAAE,EAAE;IACzF,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAa,GAAE,CAAA;IACpC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,iBAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;IAC5F,IAAI,OAAO,IAAI,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,UAAU,cAAc,CAAC,CAAA;IAE/E,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,iBAAO,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Delete the ASCII art comments from the 4 epic issues (MCARE-4..7)
|
|
4
|
+
* Run: node --env-file=.env scripts/clean-comments.mjs
|
|
5
|
+
*/
|
|
6
|
+
import accountClientPkg from '@hcengineering/account-client'
|
|
7
|
+
import corePkg from '@hcengineering/core'
|
|
8
|
+
import serverClientPkg from '@hcengineering/server-client'
|
|
9
|
+
import trackerPkg from '@hcengineering/tracker'
|
|
10
|
+
import chunterPkg from '@hcengineering/chunter'
|
|
11
|
+
|
|
12
|
+
const { getClient: getRawAccountClient } = accountClientPkg
|
|
13
|
+
const { TxOperations } = corePkg
|
|
14
|
+
const { createClient } = serverClientPkg
|
|
15
|
+
const tracker = trackerPkg.default ?? trackerPkg
|
|
16
|
+
const chunter = chunterPkg.default ?? chunterPkg
|
|
17
|
+
|
|
18
|
+
const ACCOUNTS_URL = process.env.HULY_ACCOUNTS_URL ?? 'https://account.huly.app'
|
|
19
|
+
|
|
20
|
+
async function connect () {
|
|
21
|
+
const workspaceUrl = process.env.HULY_WORKSPACE
|
|
22
|
+
const hulyToken = process.env.HULY_TOKEN
|
|
23
|
+
if (!workspaceUrl || !hulyToken) throw new Error('HULY_WORKSPACE and HULY_TOKEN required')
|
|
24
|
+
|
|
25
|
+
const authedClient = getRawAccountClient(ACCOUNTS_URL, hulyToken)
|
|
26
|
+
const info = await authedClient.getLoginInfoByToken()
|
|
27
|
+
if (!info) throw new Error('Token invalid')
|
|
28
|
+
|
|
29
|
+
let socialId, endpoint, wsToken
|
|
30
|
+
|
|
31
|
+
if ('endpoint' in info && info.endpoint) {
|
|
32
|
+
socialId = info.socialId; endpoint = info.endpoint; wsToken = info.token
|
|
33
|
+
} else {
|
|
34
|
+
socialId = info.socialId
|
|
35
|
+
const wsInfo = await authedClient.selectWorkspace(workspaceUrl, 'external')
|
|
36
|
+
endpoint = wsInfo.endpoint; wsToken = wsInfo.token
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const rawConnection = await createClient(endpoint, wsToken)
|
|
40
|
+
const txClient = new TxOperations(rawConnection, socialId)
|
|
41
|
+
return { txClient, rawConnection }
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const { txClient, rawConnection } = await connect()
|
|
45
|
+
console.log('Connected.')
|
|
46
|
+
|
|
47
|
+
const EPICS = ['MCARE-4', 'MCARE-5', 'MCARE-6', 'MCARE-7']
|
|
48
|
+
|
|
49
|
+
for (const identifier of EPICS) {
|
|
50
|
+
const issue = await txClient.findOne(tracker.class.Issue, { identifier })
|
|
51
|
+
if (!issue) { console.log(`${identifier}: NOT FOUND`); continue }
|
|
52
|
+
|
|
53
|
+
const comments = await txClient.findAll(chunter.class.ChatMessage, { attachedTo: issue._id })
|
|
54
|
+
if (comments.length === 0) { console.log(`${identifier}: no comments`); continue }
|
|
55
|
+
|
|
56
|
+
for (const comment of comments) {
|
|
57
|
+
await txClient.removeCollection(
|
|
58
|
+
chunter.class.ChatMessage,
|
|
59
|
+
issue.space,
|
|
60
|
+
comment._id,
|
|
61
|
+
issue._id,
|
|
62
|
+
tracker.class.Issue,
|
|
63
|
+
'comments'
|
|
64
|
+
)
|
|
65
|
+
console.log(`${identifier}: deleted comment ${comment._id}`)
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
await rawConnection.close()
|
|
70
|
+
console.log('Done.')
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Link EP1-EP4 documents to their corresponding epic issues via relations
|
|
4
|
+
* Run: node --env-file=.env scripts/link-docs-to-issues.mjs
|
|
5
|
+
*/
|
|
6
|
+
import accountClientPkg from '@hcengineering/account-client'
|
|
7
|
+
import corePkg from '@hcengineering/core'
|
|
8
|
+
import serverClientPkg from '@hcengineering/server-client'
|
|
9
|
+
import trackerPkg from '@hcengineering/tracker'
|
|
10
|
+
import documentPkg from '@hcengineering/document'
|
|
11
|
+
|
|
12
|
+
const { getClient: getRawAccountClient } = accountClientPkg
|
|
13
|
+
const { TxOperations } = corePkg
|
|
14
|
+
const { createClient } = serverClientPkg
|
|
15
|
+
const tracker = trackerPkg.default ?? trackerPkg
|
|
16
|
+
const document = documentPkg.default ?? documentPkg
|
|
17
|
+
|
|
18
|
+
const ACCOUNTS_URL = process.env.HULY_ACCOUNTS_URL ?? 'https://account.huly.app'
|
|
19
|
+
|
|
20
|
+
async function connect () {
|
|
21
|
+
const workspaceUrl = process.env.HULY_WORKSPACE
|
|
22
|
+
const hulyToken = process.env.HULY_TOKEN
|
|
23
|
+
if (!workspaceUrl || !hulyToken) throw new Error('HULY_WORKSPACE and HULY_TOKEN required')
|
|
24
|
+
|
|
25
|
+
const authedClient = getRawAccountClient(ACCOUNTS_URL, hulyToken)
|
|
26
|
+
const info = await authedClient.getLoginInfoByToken()
|
|
27
|
+
if (!info) throw new Error('Token invalid')
|
|
28
|
+
|
|
29
|
+
let socialId, endpoint, wsToken
|
|
30
|
+
if ('endpoint' in info && info.endpoint) {
|
|
31
|
+
socialId = info.socialId; endpoint = info.endpoint; wsToken = info.token
|
|
32
|
+
} else {
|
|
33
|
+
socialId = info.socialId
|
|
34
|
+
const wsInfo = await authedClient.selectWorkspace(workspaceUrl, 'external')
|
|
35
|
+
endpoint = wsInfo.endpoint; wsToken = wsInfo.token
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const rawConnection = await createClient(endpoint, wsToken)
|
|
39
|
+
const txClient = new TxOperations(rawConnection, socialId)
|
|
40
|
+
return { txClient, rawConnection }
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const LINKS = [
|
|
44
|
+
{ issue: 'MCARE-4', docId: '69b9a635cf60316d6ce21a50' }, // EP1
|
|
45
|
+
{ issue: 'MCARE-5', docId: '69b9a63bcf60316d6ce21a52' }, // EP2
|
|
46
|
+
{ issue: 'MCARE-6', docId: '69b9a640cf60316d6ce21a54' }, // EP3
|
|
47
|
+
{ issue: 'MCARE-7', docId: '69b9a645cf60316d6ce21a56' }, // EP4
|
|
48
|
+
]
|
|
49
|
+
|
|
50
|
+
const { txClient, rawConnection } = await connect()
|
|
51
|
+
console.log('Connected.')
|
|
52
|
+
|
|
53
|
+
for (const { issue: identifier, docId } of LINKS) {
|
|
54
|
+
const issue = await txClient.findOne(tracker.class.Issue, { identifier })
|
|
55
|
+
if (!issue) { console.log(`${identifier}: NOT FOUND`); continue }
|
|
56
|
+
|
|
57
|
+
const doc = await txClient.findOne(document.class.Document, { _id: docId })
|
|
58
|
+
if (!doc) { console.log(`${identifier}: document ${docId} NOT FOUND`); continue }
|
|
59
|
+
|
|
60
|
+
// Build updated relations array (keep existing + add the document link)
|
|
61
|
+
const existing = issue.relations ?? []
|
|
62
|
+
const alreadyLinked = existing.some(r => r._id === docId)
|
|
63
|
+
if (alreadyLinked) { console.log(`${identifier}: already linked`); continue }
|
|
64
|
+
|
|
65
|
+
await txClient.updateDoc(tracker.class.Issue, issue.space, issue._id, {
|
|
66
|
+
relations: [...existing, { _id: doc._id, _class: doc._class }]
|
|
67
|
+
})
|
|
68
|
+
|
|
69
|
+
console.log(`${identifier} ↔ "${doc.title}" ✅`)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
await rawConnection.close()
|
|
73
|
+
console.log('Done.')
|
|
@@ -0,0 +1,505 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* One-off script: populate the 4 medics-care epic documents with Mermaid diagrams
|
|
4
|
+
* Run: node --env-file=.env scripts/populate-docs.mjs
|
|
5
|
+
*/
|
|
6
|
+
import accountClientPkg from '@hcengineering/account-client'
|
|
7
|
+
import corePkg from '@hcengineering/core'
|
|
8
|
+
import serverClientPkg from '@hcengineering/server-client'
|
|
9
|
+
import documentPkg from '@hcengineering/document'
|
|
10
|
+
|
|
11
|
+
const { getClient: getRawAccountClient } = accountClientPkg
|
|
12
|
+
const { TxOperations } = corePkg
|
|
13
|
+
const { createClient } = serverClientPkg
|
|
14
|
+
const document = documentPkg.default ?? documentPkg
|
|
15
|
+
|
|
16
|
+
const DATALAKE_URL = 'https://dl-eu.huly.app'
|
|
17
|
+
const ACCOUNTS_URL = process.env.HULY_ACCOUNTS_URL ?? 'https://account.huly.app'
|
|
18
|
+
|
|
19
|
+
// ── Connect ───────────────────────────────────────────────────────────────────
|
|
20
|
+
|
|
21
|
+
async function connect () {
|
|
22
|
+
const workspaceUrl = process.env.HULY_WORKSPACE
|
|
23
|
+
const hulyToken = process.env.HULY_TOKEN
|
|
24
|
+
|
|
25
|
+
if (!workspaceUrl || !hulyToken) throw new Error('HULY_WORKSPACE and HULY_TOKEN are required')
|
|
26
|
+
|
|
27
|
+
const authedClient = getRawAccountClient(ACCOUNTS_URL, hulyToken)
|
|
28
|
+
const info = await authedClient.getLoginInfoByToken()
|
|
29
|
+
if (!info) throw new Error('HULY_TOKEN invalid or expired')
|
|
30
|
+
|
|
31
|
+
let socialId, endpoint, wsToken, workspaceUuid
|
|
32
|
+
|
|
33
|
+
if ('endpoint' in info && info.endpoint) {
|
|
34
|
+
socialId = info.socialId
|
|
35
|
+
endpoint = info.endpoint
|
|
36
|
+
wsToken = info.token
|
|
37
|
+
workspaceUuid = String(info.workspace ?? '')
|
|
38
|
+
} else if ('token' in info && info.token) {
|
|
39
|
+
socialId = info.socialId
|
|
40
|
+
const wsInfo = await authedClient.selectWorkspace(workspaceUrl, 'external')
|
|
41
|
+
if (!wsInfo.endpoint || !wsInfo.token) throw new Error(`Workspace '${workspaceUrl}' not accessible`)
|
|
42
|
+
endpoint = wsInfo.endpoint
|
|
43
|
+
wsToken = wsInfo.token
|
|
44
|
+
workspaceUuid = String(wsInfo.workspace ?? '')
|
|
45
|
+
} else {
|
|
46
|
+
throw new Error('Unexpected token response')
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const rawConnection = await createClient(endpoint, wsToken)
|
|
50
|
+
const txClient = new TxOperations(rawConnection, socialId)
|
|
51
|
+
return { txClient, rawConnection, wsToken, workspaceUuid }
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// ── Upload blob ───────────────────────────────────────────────────────────────
|
|
55
|
+
|
|
56
|
+
async function uploadContent (wsToken, workspaceUuid, docId, content) {
|
|
57
|
+
const blobId = `${docId}-content-${Date.now()}`
|
|
58
|
+
const form = new FormData()
|
|
59
|
+
form.append('file', new Blob([content], { type: 'application/json' }), blobId)
|
|
60
|
+
|
|
61
|
+
const res = await fetch(`${DATALAKE_URL}/upload/form-data/${workspaceUuid}`, {
|
|
62
|
+
method: 'POST',
|
|
63
|
+
headers: { Authorization: `Bearer ${wsToken}` },
|
|
64
|
+
body: form
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
if (!res.ok) throw new Error(`Upload failed (${res.status}): ${await res.text()}`)
|
|
68
|
+
const json = await res.json()
|
|
69
|
+
return json[0]?.id ?? blobId
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// ── Markdown → ProseMirror ────────────────────────────────────────────────────
|
|
73
|
+
|
|
74
|
+
function parseInline (text) {
|
|
75
|
+
const nodes = []
|
|
76
|
+
const re = /\*\*(.+?)\*\*|`(.+?)`|([^`*]+)/g
|
|
77
|
+
let m
|
|
78
|
+
while ((m = re.exec(text)) !== null) {
|
|
79
|
+
if (m[1] != null) nodes.push({ type: 'text', text: m[1], marks: [{ type: 'bold' }] })
|
|
80
|
+
else if (m[2] != null) nodes.push({ type: 'text', text: m[2], marks: [{ type: 'code' }] })
|
|
81
|
+
else if (m[3]?.length > 0) nodes.push({ type: 'text', text: m[3] })
|
|
82
|
+
}
|
|
83
|
+
return nodes.length > 0 ? nodes : [{ type: 'text', text }]
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function buildTable (rows) {
|
|
87
|
+
const [headerRow, ...bodyRows] = rows
|
|
88
|
+
const tableRows = []
|
|
89
|
+
if (headerRow) {
|
|
90
|
+
tableRows.push({
|
|
91
|
+
type: 'tableRow',
|
|
92
|
+
content: headerRow.map(cell => ({
|
|
93
|
+
type: 'tableHeader',
|
|
94
|
+
content: [{ type: 'paragraph', content: parseInline(cell) }]
|
|
95
|
+
}))
|
|
96
|
+
})
|
|
97
|
+
}
|
|
98
|
+
for (const row of bodyRows) {
|
|
99
|
+
tableRows.push({
|
|
100
|
+
type: 'tableRow',
|
|
101
|
+
content: row.map(cell => ({
|
|
102
|
+
type: 'tableCell',
|
|
103
|
+
content: [{ type: 'paragraph', content: parseInline(cell) }]
|
|
104
|
+
}))
|
|
105
|
+
})
|
|
106
|
+
}
|
|
107
|
+
return { type: 'table', content: tableRows }
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function markdownToProseMirror (md) {
|
|
111
|
+
const lines = md.split('\n')
|
|
112
|
+
const nodes = []
|
|
113
|
+
let i = 0
|
|
114
|
+
|
|
115
|
+
while (i < lines.length) {
|
|
116
|
+
const line = lines[i]
|
|
117
|
+
|
|
118
|
+
// Fenced code block
|
|
119
|
+
if (line.startsWith('```')) {
|
|
120
|
+
const lang = line.slice(3).trim()
|
|
121
|
+
const codeLines = []
|
|
122
|
+
i++
|
|
123
|
+
while (i < lines.length && !lines[i].startsWith('```')) {
|
|
124
|
+
codeLines.push(lines[i])
|
|
125
|
+
i++
|
|
126
|
+
}
|
|
127
|
+
i++
|
|
128
|
+
// Use Huly's native 'mermaid' node type so diagrams render properly
|
|
129
|
+
const nodeType = lang === 'mermaid' ? 'mermaid' : 'codeBlock'
|
|
130
|
+
nodes.push({
|
|
131
|
+
type: nodeType,
|
|
132
|
+
attrs: { language: lang || null },
|
|
133
|
+
content: [{ type: 'text', text: codeLines.join('\n') }]
|
|
134
|
+
})
|
|
135
|
+
continue
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Heading
|
|
139
|
+
const hm = line.match(/^(#{1,6})\s+(.+)$/)
|
|
140
|
+
if (hm) {
|
|
141
|
+
nodes.push({ type: 'heading', attrs: { level: hm[1].length }, content: parseInline(hm[2]) })
|
|
142
|
+
i++; continue
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// Table
|
|
146
|
+
if (line.includes('|') && line.trim().startsWith('|')) {
|
|
147
|
+
const tableRows = []
|
|
148
|
+
while (i < lines.length && lines[i].includes('|') && lines[i].trim().startsWith('|')) {
|
|
149
|
+
const row = lines[i].trim().replace(/^\||\|$/g, '').split('|').map(c => c.trim())
|
|
150
|
+
if (!row.every(c => /^[-:]+$/.test(c))) tableRows.push(row)
|
|
151
|
+
i++
|
|
152
|
+
}
|
|
153
|
+
if (tableRows.length > 0) nodes.push(buildTable(tableRows))
|
|
154
|
+
continue
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// Bullet list
|
|
158
|
+
if (/^(\s*[-*+])\s/.test(line)) {
|
|
159
|
+
const items = []
|
|
160
|
+
while (i < lines.length && /^(\s*[-*+])\s/.test(lines[i])) {
|
|
161
|
+
const text = lines[i].replace(/^\s*[-*+]\s/, '')
|
|
162
|
+
items.push({ type: 'listItem', content: [{ type: 'paragraph', content: parseInline(text) }] })
|
|
163
|
+
i++
|
|
164
|
+
}
|
|
165
|
+
nodes.push({ type: 'bulletList', content: items })
|
|
166
|
+
continue
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
if (line.trim() === '') { i++; continue }
|
|
170
|
+
|
|
171
|
+
nodes.push({ type: 'paragraph', content: parseInline(line) })
|
|
172
|
+
i++
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
if (nodes.length === 0) nodes.push({ type: 'paragraph', content: [] })
|
|
176
|
+
return { type: 'doc', content: nodes }
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// ── Document content ──────────────────────────────────────────────────────────
|
|
180
|
+
|
|
181
|
+
const EP1_MD = `# EP1 — Service Ordering Flow
|
|
182
|
+
|
|
183
|
+
## Architecture Flow
|
|
184
|
+
|
|
185
|
+
\`\`\`mermaid
|
|
186
|
+
flowchart TD
|
|
187
|
+
A([Patient Opens App]) --> B{What to order?}
|
|
188
|
+
|
|
189
|
+
B --> C[Health Packages\\ne.g. Full Body, Cardiac]
|
|
190
|
+
B --> D[Individual Lab Tests\\ne.g. CBC, HbA1c]
|
|
191
|
+
|
|
192
|
+
C --> E[Browse Catalogue]
|
|
193
|
+
D --> E
|
|
194
|
+
|
|
195
|
+
E --> F[Select Service]
|
|
196
|
+
F --> G[Select Patient\\nSelf or Family Member]
|
|
197
|
+
G --> H{Home Collection\\nAvailable?}
|
|
198
|
+
|
|
199
|
+
H -- Yes --> I[Choose: Home / Walk-in]
|
|
200
|
+
H -- No --> J[Walk-in Only]
|
|
201
|
+
|
|
202
|
+
I --> K[Pick Date & Slot]
|
|
203
|
+
J --> K
|
|
204
|
+
|
|
205
|
+
K --> L[Review Order]
|
|
206
|
+
L --> M[Payment via Razorpay]
|
|
207
|
+
|
|
208
|
+
M -- Success --> N[Order Confirmed ✅]
|
|
209
|
+
M -- Failed --> O[Retry Payment ❌]
|
|
210
|
+
|
|
211
|
+
N --> P[Sync to HIS]
|
|
212
|
+
N --> Q[Push Notification Sent]
|
|
213
|
+
N --> R[Order Tracking Active]
|
|
214
|
+
|
|
215
|
+
R --> S[CONFIRMED]
|
|
216
|
+
S --> T[SAMPLE COLLECTED]
|
|
217
|
+
T --> U[PROCESSING]
|
|
218
|
+
U --> V[REPORT READY 🎉]
|
|
219
|
+
V --> W[View Report in App]
|
|
220
|
+
\`\`\`
|
|
221
|
+
|
|
222
|
+
## Business Rules
|
|
223
|
+
|
|
224
|
+
| Rule | Detail |
|
|
225
|
+
|------|--------|
|
|
226
|
+
| Service visibility | Only services flagged \`canBeOrderedFromApp: true\` in HIS |
|
|
227
|
+
| Home collection | Checked per service + patient pin code |
|
|
228
|
+
| Payment | Mandatory before order confirmation |
|
|
229
|
+
| HIS sync | All orders synced back to HIS for lab/collection team |
|
|
230
|
+
| Family orders | All linked family members eligible |
|
|
231
|
+
`
|
|
232
|
+
|
|
233
|
+
const EP2_MD = `# EP2 — Medicine Ordering & Refills
|
|
234
|
+
|
|
235
|
+
## Flow
|
|
236
|
+
|
|
237
|
+
\`\`\`mermaid
|
|
238
|
+
flowchart TD
|
|
239
|
+
A([Entry Point]) --> B{Source}
|
|
240
|
+
|
|
241
|
+
B -- From Visit --> C[Prescription Medicines]
|
|
242
|
+
B -- Past Order --> D[Order History]
|
|
243
|
+
B -- Refill Reminder --> E[Refill Screen]
|
|
244
|
+
|
|
245
|
+
C --> F[Medicine List]
|
|
246
|
+
D --> F
|
|
247
|
+
E --> F
|
|
248
|
+
|
|
249
|
+
F --> G{Medicine Type?}
|
|
250
|
+
|
|
251
|
+
G -- OTC --> H[✅ Allow Order\\nNo Rx needed]
|
|
252
|
+
G -- Rx-Required --> I{Valid Prescription\\nExists?}
|
|
253
|
+
|
|
254
|
+
I -- Yes, Active --> J{Is it a Refill?}
|
|
255
|
+
I -- No / Expired --> K[❌ BLOCKED\\nShow: Prescription required\\nOffer: Book Follow-up]
|
|
256
|
+
|
|
257
|
+
J -- Within Validity --> L[✅ Allow Refill]
|
|
258
|
+
J -- Expired --> M[❌ BLOCKED\\nShow: Prescription expired\\nOffer: Book Follow-up]
|
|
259
|
+
|
|
260
|
+
H --> N[Select Patient]
|
|
261
|
+
L --> N
|
|
262
|
+
|
|
263
|
+
N --> O[Choose Delivery Address\\nSaved or New]
|
|
264
|
+
O --> P[Review Cart]
|
|
265
|
+
P --> Q[Payment]
|
|
266
|
+
|
|
267
|
+
Q -- Success --> R[Order Confirmed ✅]
|
|
268
|
+
Q -- Failed --> S[Retry ❌]
|
|
269
|
+
|
|
270
|
+
R --> T[PENDING]
|
|
271
|
+
T --> U[CONFIRMED]
|
|
272
|
+
U --> V[DISPATCHED 🚚]
|
|
273
|
+
V --> W[DELIVERED 🎉]
|
|
274
|
+
\`\`\`
|
|
275
|
+
|
|
276
|
+
## Prescription Validation Matrix
|
|
277
|
+
|
|
278
|
+
| Medicine Type | Valid Rx | Expired Rx | No Rx |
|
|
279
|
+
|--------------|----------|------------|-------|
|
|
280
|
+
| Rx-Required | ✅ Allow | ❌ Block + suggest follow-up | ❌ Block |
|
|
281
|
+
| OTC | ✅ Allow | ✅ Allow | ✅ Allow |
|
|
282
|
+
| Refill | ✅ Allow (within validity) | ❌ Block | ❌ Block |
|
|
283
|
+
|
|
284
|
+
## Business Rules
|
|
285
|
+
|
|
286
|
+
- Prescription validity period set at time of issue (30 / 60 / 90 days)
|
|
287
|
+
- Partial orders allowed: OTC items proceed even if Rx items are blocked
|
|
288
|
+
- Expired prescription → prompt to book a follow-up appointment
|
|
289
|
+
- All orders linked to patient + family member context
|
|
290
|
+
`
|
|
291
|
+
|
|
292
|
+
const EP3_MD = `# EP3 — Deep Linking Architecture
|
|
293
|
+
|
|
294
|
+
## Link Resolution Flow
|
|
295
|
+
|
|
296
|
+
\`\`\`mermaid
|
|
297
|
+
flowchart TD
|
|
298
|
+
A([Link Received\\nSMS / WhatsApp / Email / Push]) --> B[Smart Link URL\\nhttps://novacare.medicsprime.in/link/...]
|
|
299
|
+
|
|
300
|
+
B --> C{App Installed?}
|
|
301
|
+
|
|
302
|
+
C -- Yes --> D[Open Native App\\niOS Universal Link\\nAndroid App Link]
|
|
303
|
+
C -- No --> E[Open in Browser\\nWeb Fallback]
|
|
304
|
+
|
|
305
|
+
D --> F[Native Deep Link Handler]
|
|
306
|
+
F --> G{Authenticated?}
|
|
307
|
+
|
|
308
|
+
G -- Yes --> L[Route to Screen]
|
|
309
|
+
G -- No --> H[OTP Login\\nPre-fill phone if known]
|
|
310
|
+
H --> L
|
|
311
|
+
|
|
312
|
+
E --> I{Auto-Login Token\\nin URL?}
|
|
313
|
+
|
|
314
|
+
I -- Valid Token --> J[Auto-Login\\nSingle-use, 24h expiry]
|
|
315
|
+
I -- No / Expired --> K[OTP Login Page\\nPre-fill phone if known]
|
|
316
|
+
|
|
317
|
+
J --> L
|
|
318
|
+
K --> L
|
|
319
|
+
|
|
320
|
+
L --> M{Link Type}
|
|
321
|
+
|
|
322
|
+
M -- /book --> N[Appointment Booking\\npre-filled doctor/speciality]
|
|
323
|
+
M -- /apt --> O[Appointment Detail]
|
|
324
|
+
M -- /rx --> P[Prescription View]
|
|
325
|
+
M -- /report --> Q[Lab Report View]
|
|
326
|
+
M -- /package --> R[Health Package Order]
|
|
327
|
+
M -- /refill --> S[Medicine Refill Flow]
|
|
328
|
+
M -- /bill --> T[Bill & Payment]
|
|
329
|
+
\`\`\`
|
|
330
|
+
|
|
331
|
+
## Link Format
|
|
332
|
+
|
|
333
|
+
\`\`\`
|
|
334
|
+
https://{hospital}.medicsprime.in/link/{type}?id={resourceId}&t={autoLoginToken}&ph={phoneHint}
|
|
335
|
+
\`\`\`
|
|
336
|
+
|
|
337
|
+
| Parameter | Description |
|
|
338
|
+
|-----------|-------------|
|
|
339
|
+
| \`hospital\` | novacare / sarji / cura / khushi |
|
|
340
|
+
| \`type\` | apt / rx / report / package / refill / bill / book |
|
|
341
|
+
| \`id\` | Resource ID (optional for /book) |
|
|
342
|
+
| \`t\` | Auto-login token (24h, single-use, optional) |
|
|
343
|
+
| \`ph\` | Phone number hint for OTP pre-fill (optional) |
|
|
344
|
+
|
|
345
|
+
## Auto-Login Token Security
|
|
346
|
+
|
|
347
|
+
\`\`\`mermaid
|
|
348
|
+
flowchart LR
|
|
349
|
+
A[Token Generated] --> B[Signed with HMAC-SHA256]
|
|
350
|
+
B --> C[Contains: userId + expiry + resourceId]
|
|
351
|
+
C --> D[24-hour expiry]
|
|
352
|
+
D --> E[Single-use — invalidated on first use]
|
|
353
|
+
E --> F[Scoped to linked resource only]
|
|
354
|
+
\`\`\`
|
|
355
|
+
|
|
356
|
+
## Per-Hospital URL Schemes
|
|
357
|
+
|
|
358
|
+
| Hospital | Web Domain | Native Scheme |
|
|
359
|
+
|----------|-----------|---------------|
|
|
360
|
+
| NovaCare | novacare.medicsprime.in | novacare:// |
|
|
361
|
+
| Sarji | sarji.medicsprime.in | sarji:// |
|
|
362
|
+
| Cura | cura.medicsprime.in | cura:// |
|
|
363
|
+
| Khushi | khushi.medicsprime.in | khushi:// |
|
|
364
|
+
`
|
|
365
|
+
|
|
366
|
+
const EP4_MD = `# EP4 — Push Notifications
|
|
367
|
+
|
|
368
|
+
## Notification Delivery Architecture
|
|
369
|
+
|
|
370
|
+
\`\`\`mermaid
|
|
371
|
+
flowchart TD
|
|
372
|
+
A([Trigger]) --> B{Trigger Type}
|
|
373
|
+
|
|
374
|
+
B -- Hospital Event --> C[Appointment Confirmed\\nCancelled / Lab Ready\\nPrescription Ready\\nBill Generated]
|
|
375
|
+
B -- Scheduled Job --> D[Appointment Reminder\\nMedicine Dose\\nRefill Due\\nRx Expiry\\nCheckup Due]
|
|
376
|
+
B -- Patient Action --> E[Payment Success\\nOrder Placed\\nMedicine Ordered]
|
|
377
|
+
|
|
378
|
+
C --> F[Notification Engine\\nBackend Service]
|
|
379
|
+
D --> F
|
|
380
|
+
E --> F
|
|
381
|
+
|
|
382
|
+
F --> G{Check Opt-in\\nPreferences}
|
|
383
|
+
G -- Opted Out --> Z[Skip ✗]
|
|
384
|
+
G -- Opted In --> H{Quiet Hours?\\n10pm – 7am}
|
|
385
|
+
|
|
386
|
+
H -- Critical Alert --> I[Send Immediately\\nAppt Cancelled only]
|
|
387
|
+
H -- Non-Critical + Quiet --> J[Queue for 7am]
|
|
388
|
+
H -- Normal Hours --> K{Daily Limit\\nReached? max 3}
|
|
389
|
+
|
|
390
|
+
K -- Under Limit --> L[Send Now]
|
|
391
|
+
K -- At Limit --> M[Queue for Next Day]
|
|
392
|
+
|
|
393
|
+
I --> N[FCM / Firebase]
|
|
394
|
+
J --> N
|
|
395
|
+
L --> N
|
|
396
|
+
|
|
397
|
+
N --> O{Platform}
|
|
398
|
+
O -- iOS/Android --> P[Capacitor Push\\nNative Alert]
|
|
399
|
+
O -- Web --> Q[Firebase VAPID\\nBrowser Notification]
|
|
400
|
+
O -- Critical Only --> R[SMS Fallback\\nvia Communication Service]
|
|
401
|
+
|
|
402
|
+
P --> S[Tap → Deep Link\\nto Relevant Screen]
|
|
403
|
+
Q --> S
|
|
404
|
+
\`\`\`
|
|
405
|
+
|
|
406
|
+
## All Notification Scenarios
|
|
407
|
+
|
|
408
|
+
\`\`\`mermaid
|
|
409
|
+
mindmap
|
|
410
|
+
root((Push\\nNotifications))
|
|
411
|
+
Appointments
|
|
412
|
+
Confirmed ✅
|
|
413
|
+
Reminder 24h ⏰
|
|
414
|
+
Reminder 2h ⏰
|
|
415
|
+
Cancelled ❗
|
|
416
|
+
Rescheduled ❗
|
|
417
|
+
Doctor Late 🕐
|
|
418
|
+
Lab and Reports
|
|
419
|
+
Lab Result Ready 📋
|
|
420
|
+
Prescription Ready 💊
|
|
421
|
+
Home Collection Morning 🏠
|
|
422
|
+
Order Confirmed 📦
|
|
423
|
+
Medicine
|
|
424
|
+
Dose Reminder 💊
|
|
425
|
+
Missed Dose ⚠️
|
|
426
|
+
Refill Due 🔄
|
|
427
|
+
Rx Expiry 7 days 📅
|
|
428
|
+
Order Dispatched 🚚
|
|
429
|
+
Order Delivered 🎉
|
|
430
|
+
Billing
|
|
431
|
+
Bill Generated 💰
|
|
432
|
+
Payment Success ✅
|
|
433
|
+
Payment Due ⏳
|
|
434
|
+
Preventive Health
|
|
435
|
+
Annual Checkup 📅
|
|
436
|
+
Follow-up Due 👨⚕️
|
|
437
|
+
Vaccination Due 💉
|
|
438
|
+
\`\`\`
|
|
439
|
+
|
|
440
|
+
## Notification Preferences
|
|
441
|
+
|
|
442
|
+
\`\`\`mermaid
|
|
443
|
+
flowchart LR
|
|
444
|
+
A[Patient Settings] --> B[Notification Preferences]
|
|
445
|
+
B --> C[🔔 Appointments\\nDefault: ON]
|
|
446
|
+
B --> D[💊 Medicine\\nDefault: ON]
|
|
447
|
+
B --> E[📦 Orders\\nDefault: ON]
|
|
448
|
+
B --> F[💰 Billing\\nDefault: ON]
|
|
449
|
+
B --> G[🏥 Preventive Health\\nDefault: ON]
|
|
450
|
+
B --> H[📣 Promotional\\nDefault: OFF]
|
|
451
|
+
\`\`\`
|
|
452
|
+
|
|
453
|
+
## Scenario Reference Table
|
|
454
|
+
|
|
455
|
+
| Scenario | Trigger | Channel | Priority | Deep Link |
|
|
456
|
+
|----------|---------|---------|----------|-----------|
|
|
457
|
+
| Appt Confirmed | Event | Push | High | /apt?id=X |
|
|
458
|
+
| Appt Reminder 24h | Scheduled | Push + SMS | High | /apt?id=X |
|
|
459
|
+
| Appt Reminder 2h | Scheduled | Push | High | /apt?id=X |
|
|
460
|
+
| Appt Cancelled | Event | Push + SMS | **Critical** | /apt?id=X |
|
|
461
|
+
| Doctor Running Late | Event | Push | Normal | /apt?id=X |
|
|
462
|
+
| Lab Result Ready | Event | Push | High | /report?id=X |
|
|
463
|
+
| Prescription Ready | Event | Push | High | /rx?id=X |
|
|
464
|
+
| Medicine Dose Due | Scheduled | Push | Normal | Reminder |
|
|
465
|
+
| Missed Dose | Scheduled | Push | Normal | Reminder |
|
|
466
|
+
| Refill Due | Scheduled | Push | High | /refill?med=X |
|
|
467
|
+
| Rx Expiry (7 days) | Scheduled | Push | High | /rx?id=X |
|
|
468
|
+
| Bill Generated | Event | Push | High | /bill?id=X |
|
|
469
|
+
| Payment Success | Event | Push | Normal | /bill?id=X |
|
|
470
|
+
| Payment Due | Scheduled | Push | Normal | /bill?id=X |
|
|
471
|
+
| Annual Checkup | Scheduled | Push | Low | Book |
|
|
472
|
+
| Follow-up Due | Scheduled | Push | Normal | Book |
|
|
473
|
+
| Vaccination Due | Scheduled | Push | Normal | Reminder |
|
|
474
|
+
`
|
|
475
|
+
|
|
476
|
+
// ── Document IDs (created in previous session) ────────────────────────────────
|
|
477
|
+
const DOCS = [
|
|
478
|
+
{ id: '69b9a635cf60316d6ce21a50', title: 'EP1 — Service Ordering', md: EP1_MD },
|
|
479
|
+
{ id: '69b9a63bcf60316d6ce21a52', title: 'EP2 — Medicine Ordering', md: EP2_MD },
|
|
480
|
+
{ id: '69b9a640cf60316d6ce21a54', title: 'EP3 — Deep Linking', md: EP3_MD },
|
|
481
|
+
{ id: '69b9a645cf60316d6ce21a56', title: 'EP4 — Push Notifications', md: EP4_MD }
|
|
482
|
+
]
|
|
483
|
+
|
|
484
|
+
// ── Main ──────────────────────────────────────────────────────────────────────
|
|
485
|
+
|
|
486
|
+
const { txClient, rawConnection, wsToken, workspaceUuid } = await connect()
|
|
487
|
+
console.log(`Connected. Workspace UUID: ${workspaceUuid}`)
|
|
488
|
+
|
|
489
|
+
for (const { id, title, md } of DOCS) {
|
|
490
|
+
process.stdout.write(`Updating "${title}" ... `)
|
|
491
|
+
try {
|
|
492
|
+
const doc = await txClient.findOne(document.class.Document, { _id: id })
|
|
493
|
+
if (!doc) { console.log('NOT FOUND — skipping'); continue }
|
|
494
|
+
|
|
495
|
+
const prosemirror = markdownToProseMirror(md)
|
|
496
|
+
const blobId = await uploadContent(wsToken, workspaceUuid, id, JSON.stringify(prosemirror))
|
|
497
|
+
await txClient.updateDoc(document.class.Document, doc.space, doc._id, { content: blobId })
|
|
498
|
+
console.log(`✅ blob: ${blobId}`)
|
|
499
|
+
} catch (err) {
|
|
500
|
+
console.log(`❌ ${err.message}`)
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
await rawConnection.close()
|
|
505
|
+
console.log('\nDone.')
|