document360-engine 0.2.0 → 0.2.1
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/LICENSE +10 -16
- package/README.md +1 -1
- package/dist/config.d.ts +20 -0
- package/dist/d360/tools.d.ts +15 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +28 -18
- package/dist/lib/writerMode.d.ts +18 -0
- package/dist/scope/inventory.d.ts +19 -0
- package/dist/session.d.ts +12 -1
- package/dist/sync/categoryMap.d.ts +39 -0
- package/dist/sync/docsRoot.d.ts +8 -0
- package/dist/sync/frontmatter.d.ts +10 -0
- package/dist/sync/hash.d.ts +7 -0
- package/dist/sync/index.d.ts +8 -0
- package/dist/sync/pull.d.ts +41 -0
- package/dist/sync/remote.d.ts +37 -0
- package/dist/sync/status.d.ts +27 -0
- package/dist/sync/types.d.ts +22 -0
- package/package.json +3 -3
- package/skills/CLAUDE.md +38 -2
- package/skills/analyze-codebase/SKILL.md +35 -17
- package/skills/d360-markdown/SKILL.md +99 -0
- package/skills/gap-analysis/SKILL.md +75 -0
- package/skills/publish-to-d360/SKILL.md +3 -2
- package/skills/write-article/SKILL.md +7 -0
- package/dist/config.js +0 -62
- package/dist/config.js.map +0 -1
- package/dist/d360/apiLog.js +0 -68
- package/dist/d360/apiLog.js.map +0 -1
- package/dist/d360/client.js +0 -192
- package/dist/d360/client.js.map +0 -1
- package/dist/d360/environments.js +0 -56
- package/dist/d360/environments.js.map +0 -1
- package/dist/d360/oauth.js +0 -162
- package/dist/d360/oauth.js.map +0 -1
- package/dist/d360/profile.js +0 -31
- package/dist/d360/profile.js.map +0 -1
- package/dist/d360/tokenStore.js +0 -50
- package/dist/d360/tokenStore.js.map +0 -1
- package/dist/d360/tools.js +0 -337
- package/dist/d360/tools.js.map +0 -1
- package/dist/d360/wire.js +0 -83
- package/dist/d360/wire.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/auth.js +0 -25
- package/dist/lib/auth.js.map +0 -1
- package/dist/lib/messageQueue.js +0 -40
- package/dist/lib/messageQueue.js.map +0 -1
- package/dist/lib/paths.js +0 -35
- package/dist/lib/paths.js.map +0 -1
- package/dist/lib/sessionStore.js +0 -100
- package/dist/lib/sessionStore.js.map +0 -1
- package/dist/lib/suggestGen.js +0 -61
- package/dist/lib/suggestGen.js.map +0 -1
- package/dist/lib/titleGen.js +0 -64
- package/dist/lib/titleGen.js.map +0 -1
- package/dist/session.js +0 -220
- package/dist/session.js.map +0 -1
- package/skills/audit-docs/SKILL.md +0 -48
package/dist/d360/tools.js
DELETED
|
@@ -1,337 +0,0 @@
|
|
|
1
|
-
import { readFileSync } from 'node:fs';
|
|
2
|
-
import { basename, isAbsolute, resolve } from 'node:path';
|
|
3
|
-
import { createSdkMcpServer, tool } from '@anthropic-ai/claude-agent-sdk';
|
|
4
|
-
import { z } from 'zod';
|
|
5
|
-
import { d360Get, d360GetAll, d360Patch, d360Post, d360Upload, resolveProjectId, D360AuthError } from './client.js';
|
|
6
|
-
const PROJECTS = '/v3/projects';
|
|
7
|
-
const p = (projectId) => `${PROJECTS}/${projectId}`;
|
|
8
|
-
function ok(data) {
|
|
9
|
-
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
10
|
-
}
|
|
11
|
-
function fail(err) {
|
|
12
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
13
|
-
return { content: [{ type: 'text', text: msg }], isError: true };
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Build the in-process Document360 tool server for the active profile. Project resolves
|
|
17
|
-
* per-call: explicit arg → profile.project.projectId → the logged-in token's doc360_project_id claim.
|
|
18
|
-
* Write tools are gated by opts.writesAllowed (production safety).
|
|
19
|
-
*/
|
|
20
|
-
export function buildD360ToolServer(active, opts) {
|
|
21
|
-
const ctx = { profile: active.name, connection: active.connection };
|
|
22
|
-
const configProjectId = active.project.projectId;
|
|
23
|
-
const defaultWorkspaceId = active.project.workspaceId;
|
|
24
|
-
const project = () => resolveProjectId(ctx, configProjectId);
|
|
25
|
-
const workspace = (given) => {
|
|
26
|
-
const w = given ?? defaultWorkspaceId;
|
|
27
|
-
if (!w)
|
|
28
|
-
throw new Error('No workspace_id given and none in the profile. Call d360_list_workspaces first.');
|
|
29
|
-
return w;
|
|
30
|
-
};
|
|
31
|
-
/** Returns a fail() result if writes are blocked on a production profile, else null. */
|
|
32
|
-
const writeBlocked = () => opts.writesAllowed
|
|
33
|
-
? null
|
|
34
|
-
: fail(`Refusing to write to PRODUCTION profile "${active.name}". Authorize this session first: ` +
|
|
35
|
-
`run /allow-prod in the REPL, or pass --yes in one-shot/CI.`);
|
|
36
|
-
const context = tool('d360_context', 'Report the active Document360 connection: profile name, environment, project/workspace id, and whether it is a production profile. Call this before maintaining d360-category-map.json so you scope IDs to the right profile.', {}, async () => {
|
|
37
|
-
try {
|
|
38
|
-
return ok({
|
|
39
|
-
profile: active.name,
|
|
40
|
-
environment: active.connection.name,
|
|
41
|
-
production: active.production,
|
|
42
|
-
projectId: configProjectId ?? resolveProjectId(ctx),
|
|
43
|
-
workspaceId: defaultWorkspaceId ?? null,
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
catch (e) {
|
|
47
|
-
return fail(e);
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
const listProjects = tool('d360_list_projects', 'List all Document360 projects the signed-in user can access (id, name, sub-domain, status).', {}, async () => {
|
|
51
|
-
try {
|
|
52
|
-
return ok(await d360GetAll(ctx, PROJECTS));
|
|
53
|
-
}
|
|
54
|
-
catch (e) {
|
|
55
|
-
return fail(e);
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
const listWorkspaces = tool('d360_list_workspaces', 'List workspaces (project versions) for the current project. Each has id, name, slug, is_default, workspace_type.', { project_id: z.string().optional().describe('Defaults to the logged-in/config project.') }, async (args) => {
|
|
59
|
-
try {
|
|
60
|
-
return ok(await d360GetAll(ctx, `${p(args.project_id ?? project())}/workspaces`));
|
|
61
|
-
}
|
|
62
|
-
catch (e) {
|
|
63
|
-
return fail(e);
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
const listCategories = tool('d360_list_categories', 'List categories in a workspace (the folder structure for articles).', {
|
|
67
|
-
workspace_id: z.string().optional().describe('Defaults to d360.workspaceId in config.'),
|
|
68
|
-
project_id: z.string().optional(),
|
|
69
|
-
}, async (args) => {
|
|
70
|
-
try {
|
|
71
|
-
const workspaceId = args.workspace_id ?? defaultWorkspaceId;
|
|
72
|
-
if (!workspaceId)
|
|
73
|
-
return fail('No workspace_id given and none in config. Call d360_list_workspaces first.');
|
|
74
|
-
return ok(await d360GetAll(ctx, `${p(args.project_id ?? project())}/workspaces/${workspaceId}/categories`));
|
|
75
|
-
}
|
|
76
|
-
catch (e) {
|
|
77
|
-
return fail(e);
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
const listArticles = tool('d360_list_articles', 'List articles in a workspace (id, title, status, category). Use to see existing docs before writing.', {
|
|
81
|
-
workspace_id: z.string().optional().describe('Defaults to d360.workspaceId in config.'),
|
|
82
|
-
project_id: z.string().optional(),
|
|
83
|
-
}, async (args) => {
|
|
84
|
-
try {
|
|
85
|
-
const workspaceId = args.workspace_id ?? defaultWorkspaceId;
|
|
86
|
-
if (!workspaceId)
|
|
87
|
-
return fail('No workspace_id given and none in config. Call d360_list_workspaces first.');
|
|
88
|
-
return ok(await d360GetAll(ctx, `${p(args.project_id ?? project())}/workspaces/${workspaceId}/articles`));
|
|
89
|
-
}
|
|
90
|
-
catch (e) {
|
|
91
|
-
return fail(e);
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
const getArticle = tool('d360_get_article', 'Get a single article including its content. content_mode=raw returns the stored markdown source (best for editing); display returns processed content.', {
|
|
95
|
-
article_id: z.string(),
|
|
96
|
-
content_mode: z.enum(['raw', 'display']).optional().describe('raw = stored markdown source (default), display = processed.'),
|
|
97
|
-
published: z.boolean().optional().describe('Read the published version instead of the latest draft.'),
|
|
98
|
-
project_id: z.string().optional(),
|
|
99
|
-
}, async (args) => {
|
|
100
|
-
try {
|
|
101
|
-
return ok(await d360Get(ctx, `${p(args.project_id ?? project())}/articles/${args.article_id}`, {
|
|
102
|
-
query: { content_mode: args.content_mode, published: args.published },
|
|
103
|
-
}));
|
|
104
|
-
}
|
|
105
|
-
catch (e) {
|
|
106
|
-
return fail(e);
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
const aiQuery = tool('d360_ai_query', "Ask Document360's AI search over a workspace's published content. Returns an answer grounded in existing articles — use to check what's already documented.", {
|
|
110
|
-
query: z.string(),
|
|
111
|
-
workspace_id: z.string().optional().describe('Defaults to d360.workspaceId in config.'),
|
|
112
|
-
project_id: z.string().optional(),
|
|
113
|
-
}, async (args) => {
|
|
114
|
-
try {
|
|
115
|
-
const workspaceId = args.workspace_id ?? defaultWorkspaceId;
|
|
116
|
-
if (!workspaceId)
|
|
117
|
-
return fail('No workspace_id given and none in config. Call d360_list_workspaces first.');
|
|
118
|
-
return ok(await d360Post(ctx, `${p(args.project_id ?? project())}/workspaces/ai/query`, {
|
|
119
|
-
body: { query: args.query, workspace_id: workspaceId },
|
|
120
|
-
}));
|
|
121
|
-
}
|
|
122
|
-
catch (e) {
|
|
123
|
-
return fail(e);
|
|
124
|
-
}
|
|
125
|
-
});
|
|
126
|
-
// ---- write tools (gated by writesAllowed) ----
|
|
127
|
-
const createCategory = tool('d360_create_category', 'Create a category (a docs folder). Returns the new category id.', {
|
|
128
|
-
name: z.string(),
|
|
129
|
-
workspace_id: z.string().optional(),
|
|
130
|
-
parent_category_id: z.string().optional().describe('Omit for a top-level category.'),
|
|
131
|
-
content: z.string().optional(),
|
|
132
|
-
slug: z.string().optional(),
|
|
133
|
-
order: z.number().optional(),
|
|
134
|
-
project_id: z.string().optional(),
|
|
135
|
-
}, async (args) => {
|
|
136
|
-
const blocked = writeBlocked();
|
|
137
|
-
if (blocked)
|
|
138
|
-
return blocked;
|
|
139
|
-
try {
|
|
140
|
-
return ok(await d360Post(ctx, `${p(args.project_id ?? project())}/categories`, {
|
|
141
|
-
body: {
|
|
142
|
-
name: args.name,
|
|
143
|
-
workspace_id: workspace(args.workspace_id),
|
|
144
|
-
parent_category_id: args.parent_category_id,
|
|
145
|
-
content: args.content,
|
|
146
|
-
slug: args.slug,
|
|
147
|
-
order: args.order,
|
|
148
|
-
// Markdown-only by product decision (matches articles).
|
|
149
|
-
content_type: 'markdown',
|
|
150
|
-
},
|
|
151
|
-
}));
|
|
152
|
-
}
|
|
153
|
-
catch (e) {
|
|
154
|
-
return fail(e);
|
|
155
|
-
}
|
|
156
|
-
});
|
|
157
|
-
const createArticle = tool('d360_create_article', 'Create a DRAFT article in a category. The body is always Markdown (product rule — we never create WYSIWYG/Block articles). Returns the new article id. Does not publish.', {
|
|
158
|
-
title: z.string(),
|
|
159
|
-
category_id: z.string(),
|
|
160
|
-
content: z.string().optional().describe('Markdown body.'),
|
|
161
|
-
workspace_id: z.string().optional(),
|
|
162
|
-
slug: z.string().optional(),
|
|
163
|
-
order: z.number().optional(),
|
|
164
|
-
project_id: z.string().optional(),
|
|
165
|
-
}, async (args) => {
|
|
166
|
-
const blocked = writeBlocked();
|
|
167
|
-
if (blocked)
|
|
168
|
-
return blocked;
|
|
169
|
-
try {
|
|
170
|
-
// articles/bulk with a single item is the create path. content_type is
|
|
171
|
-
// hardcoded to 'markdown' by product decision — Document360 articles are
|
|
172
|
-
// markdown-only for control + simplicity (no WYSIWYG/Block).
|
|
173
|
-
return ok(await d360Post(ctx, `${p(args.project_id ?? project())}/articles/bulk`, {
|
|
174
|
-
body: {
|
|
175
|
-
articles: [
|
|
176
|
-
{
|
|
177
|
-
title: args.title,
|
|
178
|
-
category_id: args.category_id,
|
|
179
|
-
workspace_id: workspace(args.workspace_id),
|
|
180
|
-
content: args.content,
|
|
181
|
-
slug: args.slug,
|
|
182
|
-
order: args.order,
|
|
183
|
-
content_type: 'markdown',
|
|
184
|
-
},
|
|
185
|
-
],
|
|
186
|
-
},
|
|
187
|
-
}));
|
|
188
|
-
}
|
|
189
|
-
catch (e) {
|
|
190
|
-
return fail(e);
|
|
191
|
-
}
|
|
192
|
-
});
|
|
193
|
-
const updateArticle = tool('d360_update_article', 'Update an article\'s title/content/category. Edits the latest draft by default; set auto_fork to safely edit a published article (creates a new draft version).', {
|
|
194
|
-
article_id: z.string(),
|
|
195
|
-
title: z.string().optional(),
|
|
196
|
-
content: z.string().optional().describe('Markdown body.'),
|
|
197
|
-
category_id: z.string().optional(),
|
|
198
|
-
hidden: z.boolean().optional(),
|
|
199
|
-
version_number: z.number().optional(),
|
|
200
|
-
auto_fork: z.boolean().optional().describe('If the target version is published, fork a new draft instead of erroring.'),
|
|
201
|
-
project_id: z.string().optional(),
|
|
202
|
-
}, async (args) => {
|
|
203
|
-
const blocked = writeBlocked();
|
|
204
|
-
if (blocked)
|
|
205
|
-
return blocked;
|
|
206
|
-
try {
|
|
207
|
-
const { article_id, project_id, ...body } = args;
|
|
208
|
-
return ok(await d360Patch(ctx, `${p(project_id ?? project())}/articles/${article_id}`, { body }));
|
|
209
|
-
}
|
|
210
|
-
catch (e) {
|
|
211
|
-
return fail(e);
|
|
212
|
-
}
|
|
213
|
-
});
|
|
214
|
-
const forkArticle = tool('d360_fork_article', 'Fork a published article into a new draft version — the safe way to start editing live content.', { article_id: z.string(), project_id: z.string().optional() }, async (args) => {
|
|
215
|
-
const blocked = writeBlocked();
|
|
216
|
-
if (blocked)
|
|
217
|
-
return blocked;
|
|
218
|
-
try {
|
|
219
|
-
return ok(await d360Post(ctx, `${p(args.project_id ?? project())}/articles/${args.article_id}/fork`));
|
|
220
|
-
}
|
|
221
|
-
catch (e) {
|
|
222
|
-
return fail(e);
|
|
223
|
-
}
|
|
224
|
-
});
|
|
225
|
-
const publishArticle = tool('d360_publish_article', 'Publish an article version. This makes the draft live to readers — only call when the user explicitly asks to publish.', {
|
|
226
|
-
article_id: z.string(),
|
|
227
|
-
version_number: z.number(),
|
|
228
|
-
workspace_id: z.string().optional(),
|
|
229
|
-
message: z.string().optional(),
|
|
230
|
-
project_id: z.string().optional(),
|
|
231
|
-
}, async (args) => {
|
|
232
|
-
const blocked = writeBlocked();
|
|
233
|
-
if (blocked)
|
|
234
|
-
return blocked;
|
|
235
|
-
try {
|
|
236
|
-
return ok(await d360Post(ctx, `${p(args.project_id ?? project())}/articles/${args.article_id}/publish`, {
|
|
237
|
-
body: { workspace_id: workspace(args.workspace_id), version_number: args.version_number, message: args.message },
|
|
238
|
-
}));
|
|
239
|
-
}
|
|
240
|
-
catch (e) {
|
|
241
|
-
return fail(e);
|
|
242
|
-
}
|
|
243
|
-
});
|
|
244
|
-
const unpublishArticle = tool('d360_unpublish_article', 'Unpublish an article version, reverting it to draft (removes it from readers).', {
|
|
245
|
-
article_id: z.string(),
|
|
246
|
-
// REQUIRED by the API (spec: unpublish body requires version_number +
|
|
247
|
-
// workspace_id) — optional here used to silently send an invalid body.
|
|
248
|
-
version_number: z.number().describe('The published version to unpublish (see d360_get_article).'),
|
|
249
|
-
workspace_id: z.string().optional(),
|
|
250
|
-
project_id: z.string().optional(),
|
|
251
|
-
}, async (args) => {
|
|
252
|
-
const blocked = writeBlocked();
|
|
253
|
-
if (blocked)
|
|
254
|
-
return blocked;
|
|
255
|
-
try {
|
|
256
|
-
return ok(await d360Post(ctx, `${p(args.project_id ?? project())}/articles/${args.article_id}/unpublish`, {
|
|
257
|
-
body: { workspace_id: workspace(args.workspace_id), version_number: args.version_number },
|
|
258
|
-
}));
|
|
259
|
-
}
|
|
260
|
-
catch (e) {
|
|
261
|
-
return fail(e);
|
|
262
|
-
}
|
|
263
|
-
});
|
|
264
|
-
const uploadDriveFile = tool('d360_upload_drive_file', 'Upload a local file (e.g. a captured screenshot PNG) to Drive and return its URL for embedding in an article. Uploads to the default folder unless folder_id is given.', {
|
|
265
|
-
file_path: z.string().describe('Local path to the file (absolute, or relative to the repo).'),
|
|
266
|
-
folder_id: z.string().optional(),
|
|
267
|
-
title: z.string().optional(),
|
|
268
|
-
project_id: z.string().optional(),
|
|
269
|
-
}, async (args) => {
|
|
270
|
-
const blocked = writeBlocked();
|
|
271
|
-
if (blocked)
|
|
272
|
-
return blocked;
|
|
273
|
-
try {
|
|
274
|
-
const pid = args.project_id ?? project();
|
|
275
|
-
const filePath = isAbsolute(args.file_path) ? args.file_path : resolve(process.cwd(), args.file_path);
|
|
276
|
-
let folderId = args.folder_id;
|
|
277
|
-
if (!folderId) {
|
|
278
|
-
const def = await d360Get(ctx, `${p(pid)}/drive/folders/default`);
|
|
279
|
-
folderId = def?.id;
|
|
280
|
-
if (!folderId)
|
|
281
|
-
return fail('Could not resolve the default Drive folder.');
|
|
282
|
-
}
|
|
283
|
-
const bytes = readFileSync(filePath);
|
|
284
|
-
const form = new FormData();
|
|
285
|
-
// NOTE: field name 'file' is unverified against staging (spec models the
|
|
286
|
-
// multipart body loosely) — confirm during the dogfood; adjust if rejected.
|
|
287
|
-
form.append('file', new Blob([bytes]), args.title ?? basename(filePath));
|
|
288
|
-
return ok(await d360Upload(ctx, `${p(pid)}/drive/folders/${folderId}/files`, form));
|
|
289
|
-
}
|
|
290
|
-
catch (e) {
|
|
291
|
-
return fail(e);
|
|
292
|
-
}
|
|
293
|
-
});
|
|
294
|
-
const searchDrive = tool('d360_search_drive', 'Search Drive files (e.g. to reuse an already-uploaded screenshot instead of uploading a duplicate).', {
|
|
295
|
-
search_keyword: z.string().optional(),
|
|
296
|
-
allow_images_only: z.boolean().optional(),
|
|
297
|
-
project_id: z.string().optional(),
|
|
298
|
-
}, async (args) => {
|
|
299
|
-
try {
|
|
300
|
-
return ok(await d360GetAll(ctx, `${p(args.project_id ?? project())}/drive/search`, {
|
|
301
|
-
query: { search_keyword: args.search_keyword, allow_images_only: args.allow_images_only },
|
|
302
|
-
}));
|
|
303
|
-
}
|
|
304
|
-
catch (e) {
|
|
305
|
-
return fail(e);
|
|
306
|
-
}
|
|
307
|
-
});
|
|
308
|
-
return createSdkMcpServer({
|
|
309
|
-
name: 'document360',
|
|
310
|
-
version: '0.2.0',
|
|
311
|
-
instructions: 'First-party Document360 tools. The signed-in user\'s permissions apply server-side. ' +
|
|
312
|
-
'Project/workspace default from the active profile; pass ids explicitly to override. ' +
|
|
313
|
-
'Create articles as DRAFTS; only call d360_publish_article when the user explicitly asks to publish. ' +
|
|
314
|
-
'All articles are Markdown — the tools enforce this; never attempt WYSIWYG/Block content. ' +
|
|
315
|
-
'To edit a published article, fork it (d360_fork_article) or update with auto_fork. ' +
|
|
316
|
-
'Auth errors mean the session expired — tell the user to run: d360-writer login.',
|
|
317
|
-
tools: [
|
|
318
|
-
context,
|
|
319
|
-
listProjects,
|
|
320
|
-
listWorkspaces,
|
|
321
|
-
listCategories,
|
|
322
|
-
listArticles,
|
|
323
|
-
getArticle,
|
|
324
|
-
aiQuery,
|
|
325
|
-
createCategory,
|
|
326
|
-
createArticle,
|
|
327
|
-
updateArticle,
|
|
328
|
-
forkArticle,
|
|
329
|
-
publishArticle,
|
|
330
|
-
unpublishArticle,
|
|
331
|
-
uploadDriveFile,
|
|
332
|
-
searchDrive,
|
|
333
|
-
],
|
|
334
|
-
});
|
|
335
|
-
}
|
|
336
|
-
export { D360AuthError };
|
|
337
|
-
//# sourceMappingURL=tools.js.map
|
package/dist/d360/tools.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/d360/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/d360/wire.js
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Wire contracts for the in-process D360 tools — the HTTP shape each tool in
|
|
3
|
-
* tools.ts actually sends. wire.test.ts validates every entry against the
|
|
4
|
-
* OpenAPI spec at the repo root (document360-openapi-spec-V3.json):
|
|
5
|
-
* path exists, method exists, every body/query key exists in the spec schema,
|
|
6
|
-
* and every spec-REQUIRED body property is sent.
|
|
7
|
-
*
|
|
8
|
-
* ⚠ KEEP IN SYNC WITH tools.ts BY HAND: when you change a tool's path, body
|
|
9
|
-
* or query there, mirror it here — the conformance test then re-audits the
|
|
10
|
-
* change against the spec.
|
|
11
|
-
*/
|
|
12
|
-
/** GETs that paginate via d360GetAll send a `cursor` query param. */
|
|
13
|
-
const CURSOR = ['cursor'];
|
|
14
|
-
export const TOOL_WIRE = [
|
|
15
|
-
{ tool: 'd360_list_projects', method: 'get', path: '/v3/projects', queryKeys: CURSOR },
|
|
16
|
-
{ tool: 'd360_list_workspaces', method: 'get', path: '/v3/projects/{project_id}/workspaces', queryKeys: CURSOR },
|
|
17
|
-
{ tool: 'd360_list_categories', method: 'get', path: '/v3/projects/{project_id}/workspaces/{workspace_id}/categories', queryKeys: CURSOR },
|
|
18
|
-
{ tool: 'd360_list_articles', method: 'get', path: '/v3/projects/{project_id}/workspaces/{workspace_id}/articles', queryKeys: CURSOR },
|
|
19
|
-
{
|
|
20
|
-
tool: 'd360_get_article',
|
|
21
|
-
method: 'get',
|
|
22
|
-
path: '/v3/projects/{project_id}/articles/{article_id}',
|
|
23
|
-
queryKeys: ['content_mode', 'published'],
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
tool: 'd360_ai_query',
|
|
27
|
-
method: 'post',
|
|
28
|
-
path: '/v3/projects/{project_id}/workspaces/ai/query',
|
|
29
|
-
bodyKeys: ['query', 'workspace_id'],
|
|
30
|
-
alwaysSent: ['query', 'workspace_id'],
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
tool: 'd360_create_category',
|
|
34
|
-
method: 'post',
|
|
35
|
-
path: '/v3/projects/{project_id}/categories',
|
|
36
|
-
bodyKeys: ['name', 'workspace_id', 'parent_category_id', 'content', 'slug', 'order', 'content_type'],
|
|
37
|
-
alwaysSent: ['name', 'workspace_id', 'content_type'],
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
tool: 'd360_create_article',
|
|
41
|
-
method: 'post',
|
|
42
|
-
path: '/v3/projects/{project_id}/articles/bulk',
|
|
43
|
-
bodyKeys: ['articles'],
|
|
44
|
-
alwaysSent: ['articles'],
|
|
45
|
-
nested: {
|
|
46
|
-
property: 'articles',
|
|
47
|
-
itemKeys: ['title', 'category_id', 'workspace_id', 'content', 'slug', 'order', 'content_type'],
|
|
48
|
-
alwaysSentItemKeys: ['title', 'category_id', 'workspace_id', 'content_type'],
|
|
49
|
-
},
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
tool: 'd360_update_article',
|
|
53
|
-
method: 'patch',
|
|
54
|
-
path: '/v3/projects/{project_id}/articles/{article_id}',
|
|
55
|
-
bodyKeys: ['title', 'content', 'category_id', 'hidden', 'version_number', 'auto_fork'],
|
|
56
|
-
alwaysSent: [],
|
|
57
|
-
},
|
|
58
|
-
{ tool: 'd360_fork_article', method: 'post', path: '/v3/projects/{project_id}/articles/{article_id}/fork' },
|
|
59
|
-
{
|
|
60
|
-
tool: 'd360_publish_article',
|
|
61
|
-
method: 'post',
|
|
62
|
-
path: '/v3/projects/{project_id}/articles/{article_id}/publish',
|
|
63
|
-
bodyKeys: ['workspace_id', 'version_number', 'message'],
|
|
64
|
-
alwaysSent: ['workspace_id', 'version_number'],
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
tool: 'd360_unpublish_article',
|
|
68
|
-
method: 'post',
|
|
69
|
-
path: '/v3/projects/{project_id}/articles/{article_id}/unpublish',
|
|
70
|
-
bodyKeys: ['workspace_id', 'version_number'],
|
|
71
|
-
alwaysSent: ['workspace_id', 'version_number'],
|
|
72
|
-
},
|
|
73
|
-
// multipart body — field names can't be validated against the JSON schema; path+method only.
|
|
74
|
-
{ tool: 'd360_upload_drive_file', method: 'post', path: '/v3/projects/{project_id}/drive/folders/{folder_id}/files' },
|
|
75
|
-
{ tool: 'd360_upload_drive_file (default-folder lookup)', method: 'get', path: '/v3/projects/{project_id}/drive/folders/default' },
|
|
76
|
-
{
|
|
77
|
-
tool: 'd360_search_drive',
|
|
78
|
-
method: 'get',
|
|
79
|
-
path: '/v3/projects/{project_id}/drive/search',
|
|
80
|
-
queryKeys: ['search_keyword', 'allow_images_only', 'cursor'],
|
|
81
|
-
},
|
|
82
|
-
];
|
|
83
|
-
//# sourceMappingURL=wire.js.map
|
package/dist/d360/wire.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wire.js","sourceRoot":"","sources":["../../src/d360/wire.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,uFAAuF;AACvF,qFAAqF;AACrF,6BAA6B;AAE7B,cAAc,cAAc,CAAC,CAAC,kEAAkE;AAChG,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
|
package/dist/lib/auth.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { existsSync } from 'node:fs';
|
|
2
|
-
import { homedir } from 'node:os';
|
|
3
|
-
import { join } from 'node:path';
|
|
4
|
-
export const AUTH_MODES = ['auto', 'api', 'subscription'];
|
|
5
|
-
function hasStoredLogin() {
|
|
6
|
-
if (process.env.CLAUDE_CODE_OAUTH_TOKEN)
|
|
7
|
-
return true;
|
|
8
|
-
return existsSync(join(homedir(), '.claude', '.credentials.json'));
|
|
9
|
-
}
|
|
10
|
-
export function resolveAuth(mode) {
|
|
11
|
-
const hasKey = Boolean(process.env.ANTHROPIC_API_KEY);
|
|
12
|
-
if (mode === 'api') {
|
|
13
|
-
return hasKey ? { kind: 'api' } : { kind: 'none' };
|
|
14
|
-
}
|
|
15
|
-
if (mode === 'subscription') {
|
|
16
|
-
// The SDK-spawned engine inherits our env; drop the key so it can't win.
|
|
17
|
-
delete process.env.ANTHROPIC_API_KEY;
|
|
18
|
-
return { kind: 'subscription', stored: hasStoredLogin() };
|
|
19
|
-
}
|
|
20
|
-
// auto
|
|
21
|
-
if (hasKey)
|
|
22
|
-
return { kind: 'api' };
|
|
23
|
-
return { kind: 'subscription', stored: hasStoredLogin() };
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=auth.js.map
|
package/dist/lib/auth.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,CAAC,MAAM,UAAU,GAAwB,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;AAS/E,SAAS,cAAc;IACrB,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB;QAAE,OAAO,IAAI,CAAC;IACrD,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAc;IACxC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAEtD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;QAC5B,yEAAyE;QACzE,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QACrC,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC;IAC5D,CAAC;IAED,OAAO;IACP,IAAI,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACnC,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC;AAC5D,CAAC"}
|
package/dist/lib/messageQueue.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
export class UserMessageQueue {
|
|
2
|
-
resolvers = [];
|
|
3
|
-
buffer = [];
|
|
4
|
-
closed = false;
|
|
5
|
-
push(content) {
|
|
6
|
-
if (this.closed)
|
|
7
|
-
return;
|
|
8
|
-
const msg = {
|
|
9
|
-
type: 'user',
|
|
10
|
-
message: { role: 'user', content },
|
|
11
|
-
parent_tool_use_id: null,
|
|
12
|
-
};
|
|
13
|
-
const resolver = this.resolvers.shift();
|
|
14
|
-
if (resolver)
|
|
15
|
-
resolver(msg);
|
|
16
|
-
else
|
|
17
|
-
this.buffer.push(msg);
|
|
18
|
-
}
|
|
19
|
-
close() {
|
|
20
|
-
this.closed = true;
|
|
21
|
-
for (const r of this.resolvers)
|
|
22
|
-
r(null);
|
|
23
|
-
this.resolvers = [];
|
|
24
|
-
}
|
|
25
|
-
async *[Symbol.asyncIterator]() {
|
|
26
|
-
while (true) {
|
|
27
|
-
if (this.buffer.length > 0) {
|
|
28
|
-
yield this.buffer.shift();
|
|
29
|
-
continue;
|
|
30
|
-
}
|
|
31
|
-
if (this.closed)
|
|
32
|
-
return;
|
|
33
|
-
const next = await new Promise(r => this.resolvers.push(r));
|
|
34
|
-
if (next === null)
|
|
35
|
-
return;
|
|
36
|
-
yield next;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=messageQueue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"messageQueue.js","sourceRoot":"","sources":["../../src/lib/messageQueue.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,gBAAgB;IACnB,SAAS,GAAgD,EAAE,CAAC;IAC5D,MAAM,GAAqB,EAAE,CAAC;IAC9B,MAAM,GAAG,KAAK,CAAC;IAEvB,IAAI,CAAC,OAAe;QAClB,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,MAAM,GAAG,GAAmB;YAC1B,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;YAClC,kBAAkB,EAAE,IAAI;SACzB,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACxC,IAAI,QAAQ;YAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;;YACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS;YAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAC3B,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAG,CAAC;gBAC3B,SAAS;YACX,CAAC;YACD,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO;YACxB,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,CAAwB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACnF,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO;YAC1B,MAAM,IAAI,CAAC;QACb,CAAC;IACH,CAAC;CACF"}
|
package/dist/lib/paths.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { homedir } from 'node:os';
|
|
2
|
-
import { join, dirname } from 'node:path';
|
|
3
|
-
import { fileURLToPath } from 'node:url';
|
|
4
|
-
import { existsSync, mkdirSync } from 'node:fs';
|
|
5
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
6
|
-
const __dirname = dirname(__filename);
|
|
7
|
-
export function packageRoot() {
|
|
8
|
-
return join(__dirname, '..', '..');
|
|
9
|
-
}
|
|
10
|
-
export function packageSkillsDir() {
|
|
11
|
-
return join(packageRoot(), 'skills');
|
|
12
|
-
}
|
|
13
|
-
export function userDir() {
|
|
14
|
-
return join(homedir(), '.document360-writer');
|
|
15
|
-
}
|
|
16
|
-
export function userConfigPath() {
|
|
17
|
-
return join(userDir(), 'config.json');
|
|
18
|
-
}
|
|
19
|
-
export function userMcpConfigPath() {
|
|
20
|
-
return join(userDir(), 'mcp.json');
|
|
21
|
-
}
|
|
22
|
-
export function sessionsFilePath() {
|
|
23
|
-
return join(userDir(), 'sessions.json');
|
|
24
|
-
}
|
|
25
|
-
export function projectConfigPath(cwd = process.cwd()) {
|
|
26
|
-
return join(cwd, '.d360-writer.json');
|
|
27
|
-
}
|
|
28
|
-
export function projectSkillsDir(cwd = process.cwd()) {
|
|
29
|
-
return join(cwd, '.d360-writer', 'skills');
|
|
30
|
-
}
|
|
31
|
-
export function ensureDir(path) {
|
|
32
|
-
if (!existsSync(path))
|
|
33
|
-
mkdirSync(path, { recursive: true });
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=paths.js.map
|
package/dist/lib/paths.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEhD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,MAAM,UAAU,WAAW;IACzB,OAAO,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,qBAAqB,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IAC3D,OAAO,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IAC1D,OAAO,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,CAAC"}
|