@goondocks/myco 0.5.0 → 0.6.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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +4 -0
- package/dist/{chunk-JJL6AMDA.js → chunk-24DOZEUJ.js} +255 -6
- package/dist/chunk-24DOZEUJ.js.map +1 -0
- package/dist/{chunk-ZWUFTOG3.js → chunk-2GSX3BK2.js} +4 -4
- package/dist/{chunk-FIRMTYFH.js → chunk-2YBUL3IL.js} +4 -37
- package/dist/chunk-2YBUL3IL.js.map +1 -0
- package/dist/{chunk-HL2S5QZG.js → chunk-2ZBB3MQT.js} +319 -40
- package/dist/chunk-2ZBB3MQT.js.map +1 -0
- package/dist/{chunk-HJG7Z6SJ.js → chunk-3EM23DMD.js} +2 -2
- package/dist/{chunk-XQXXF6MU.js → chunk-4RMSHZE4.js} +12 -1
- package/dist/{chunk-XQXXF6MU.js.map → chunk-4RMSHZE4.js.map} +1 -1
- package/dist/{chunk-T7OC6GH5.js → chunk-5FNZ7AMX.js} +2 -2
- package/dist/{chunk-X6TKHO22.js → chunk-5QWZT4AB.js} +2 -2
- package/dist/{chunk-B6WVNDA5.js → chunk-6BSDCZ5Q.js} +8 -2
- package/dist/{chunk-B6WVNDA5.js.map → chunk-6BSDCZ5Q.js.map} +1 -1
- package/dist/{chunk-R6LQT3U7.js → chunk-B5UZSHQV.js} +8 -12
- package/dist/{chunk-R6LQT3U7.js.map → chunk-B5UZSHQV.js.map} +1 -1
- package/dist/{chunk-7KQB22DP.js → chunk-E7OBRBCQ.js} +2 -2
- package/dist/{chunk-RCV2I4AI.js → chunk-GDYYJTTT.js} +5 -3
- package/dist/{chunk-RCV2I4AI.js.map → chunk-GDYYJTTT.js.map} +1 -1
- package/dist/{chunk-MIU3DKLN.js → chunk-GNR3QAER.js} +2 -2
- package/dist/{chunk-BMJX2IDQ.js → chunk-H7PRCVGQ.js} +2 -2
- package/dist/{chunk-6LTNFMXO.js → chunk-KC7ENQTN.js} +2 -2
- package/dist/chunk-KUMVJIJW.js +117 -0
- package/dist/chunk-KUMVJIJW.js.map +1 -0
- package/dist/{chunk-ND4VK6C7.js → chunk-L25U7PIG.js} +2 -2
- package/dist/{chunk-6UJWI4IW.js → chunk-MQSYSQ6T.js} +7 -5
- package/dist/{chunk-6UJWI4IW.js.map → chunk-MQSYSQ6T.js.map} +1 -1
- package/dist/{chunk-TBRZAJ7W.js → chunk-P3WO3N3I.js} +11 -3
- package/dist/chunk-P3WO3N3I.js.map +1 -0
- package/dist/{chunk-JI6M2L2W.js → chunk-QGJ2ZIUZ.js} +7 -4
- package/dist/chunk-QGJ2ZIUZ.js.map +1 -0
- package/dist/{chunk-5EZ7QF6J.js → chunk-QLUE3BUL.js} +66 -1
- package/dist/chunk-QLUE3BUL.js.map +1 -0
- package/dist/{chunk-AK6GNLPV.js → chunk-TWSTAVLO.js} +17 -1
- package/dist/{chunk-AK6GNLPV.js.map → chunk-TWSTAVLO.js.map} +1 -1
- package/dist/{chunk-FIA5NTRH.js → chunk-UVGAVYWZ.js} +11 -13
- package/dist/chunk-UVGAVYWZ.js.map +1 -0
- package/dist/{chunk-UKWO26VI.js → chunk-YTANWAGE.js} +2 -2
- package/dist/chunk-ZMYNRTTD.js +64 -0
- package/dist/chunk-ZMYNRTTD.js.map +1 -0
- package/dist/{cli-BLYNNKGJ.js → cli-K7SUTP7A.js} +22 -22
- package/dist/{client-5GB4WVXE.js → client-YJMNTITQ.js} +5 -5
- package/dist/{config-5FGLQGCW.js → config-G5GGT5A6.js} +3 -3
- package/dist/curate-6T5NKVXK.js +80 -0
- package/dist/curate-6T5NKVXK.js.map +1 -0
- package/dist/{detect-providers-BIHYFK5M.js → detect-providers-S3M5TAMW.js} +3 -3
- package/dist/{digest-7NKYXM6G.js → digest-O35VHYFP.js} +31 -40
- package/dist/digest-O35VHYFP.js.map +1 -0
- package/dist/{init-HPQ77WWF.js → init-TFLSATB3.js} +9 -11
- package/dist/init-TFLSATB3.js.map +1 -0
- package/dist/{logs-BSTBZHDR.js → logs-IENORIYR.js} +3 -3
- package/dist/{main-NFQ4II75.js → main-JEUQS3BY.js} +1218 -294
- package/dist/main-JEUQS3BY.js.map +1 -0
- package/dist/rebuild-7SH5GSNX.js +66 -0
- package/dist/rebuild-7SH5GSNX.js.map +1 -0
- package/dist/{reprocess-ZL4HKTSC.js → reprocess-Q4YH2ZBK.js} +20 -22
- package/dist/{reprocess-ZL4HKTSC.js.map → reprocess-Q4YH2ZBK.js.map} +1 -1
- package/dist/{restart-FYW662DR.js → restart-NLJLB52D.js} +7 -6
- package/dist/{restart-FYW662DR.js.map → restart-NLJLB52D.js.map} +1 -1
- package/dist/{search-E5JQMTXV.js → search-2BVRF54H.js} +10 -10
- package/dist/{server-TV3D35HZ.js → server-4AMZNP4F.js} +51 -97
- package/dist/{server-TV3D35HZ.js.map → server-4AMZNP4F.js.map} +1 -1
- package/dist/{session-QF6MILAC.js → session-F326AWCH.js} +2 -2
- package/dist/{session-start-5MFEOVQ5.js → session-start-AZAF3DTE.js} +10 -10
- package/dist/setup-digest-YLZZGSSR.js +15 -0
- package/dist/setup-llm-JOXBSLXC.js +15 -0
- package/dist/src/cli.js +4 -4
- package/dist/src/daemon/main.js +4 -4
- package/dist/src/hooks/post-tool-use.js +5 -5
- package/dist/src/hooks/session-end.js +5 -5
- package/dist/src/hooks/session-start.js +4 -4
- package/dist/src/hooks/stop.js +7 -7
- package/dist/src/hooks/user-prompt-submit.js +5 -5
- package/dist/src/mcp/server.js +4 -4
- package/dist/src/prompts/consolidation.md +46 -0
- package/dist/src/templates/portal.md +5 -0
- package/dist/stats-MKDIZFIQ.js +58 -0
- package/dist/stats-MKDIZFIQ.js.map +1 -0
- package/dist/templates-XPRBOWCE.js +38 -0
- package/dist/templates-XPRBOWCE.js.map +1 -0
- package/dist/ui/assets/index-D37IoDXS.css +1 -0
- package/dist/ui/assets/index-DA61Ial2.js +289 -0
- package/dist/ui/favicon.svg +11 -0
- package/dist/ui/fonts/GeistMono-LICENSE.txt +92 -0
- package/dist/ui/fonts/GeistMono-Variable.woff2 +0 -0
- package/dist/ui/index.html +14 -0
- package/dist/{verify-RACBFT2P.js → verify-7DW7LAND.js} +6 -6
- package/dist/{version-HJTVNPOO.js → version-RQLD7VBP.js} +4 -4
- package/package.json +3 -2
- package/skills/myco/SKILL.md +20 -1
- package/skills/myco/references/cli-usage.md +48 -0
- package/skills/myco/references/wisdom.md +11 -1
- package/dist/chunk-2AMAOSRF.js +0 -105
- package/dist/chunk-2AMAOSRF.js.map +0 -1
- package/dist/chunk-5EZ7QF6J.js.map +0 -1
- package/dist/chunk-FIA5NTRH.js.map +0 -1
- package/dist/chunk-FIRMTYFH.js.map +0 -1
- package/dist/chunk-HL2S5QZG.js.map +0 -1
- package/dist/chunk-IURC35BF.js +0 -49
- package/dist/chunk-IURC35BF.js.map +0 -1
- package/dist/chunk-JI6M2L2W.js.map +0 -1
- package/dist/chunk-JJL6AMDA.js.map +0 -1
- package/dist/chunk-KYL67SKZ.js +0 -150
- package/dist/chunk-KYL67SKZ.js.map +0 -1
- package/dist/chunk-TBRZAJ7W.js.map +0 -1
- package/dist/curate-S4HOYWXA.js +0 -231
- package/dist/curate-S4HOYWXA.js.map +0 -1
- package/dist/digest-7NKYXM6G.js.map +0 -1
- package/dist/init-HPQ77WWF.js.map +0 -1
- package/dist/main-NFQ4II75.js.map +0 -1
- package/dist/rebuild-KQ6G2GZM.js +0 -86
- package/dist/rebuild-KQ6G2GZM.js.map +0 -1
- package/dist/setup-digest-DZAFIBEF.js +0 -15
- package/dist/setup-llm-4BZM33YT.js +0 -15
- package/dist/stats-ZIIJ2GB3.js +0 -77
- package/dist/stats-ZIIJ2GB3.js.map +0 -1
- /package/dist/{chunk-ZWUFTOG3.js.map → chunk-2GSX3BK2.js.map} +0 -0
- /package/dist/{chunk-HJG7Z6SJ.js.map → chunk-3EM23DMD.js.map} +0 -0
- /package/dist/{chunk-T7OC6GH5.js.map → chunk-5FNZ7AMX.js.map} +0 -0
- /package/dist/{chunk-X6TKHO22.js.map → chunk-5QWZT4AB.js.map} +0 -0
- /package/dist/{chunk-7KQB22DP.js.map → chunk-E7OBRBCQ.js.map} +0 -0
- /package/dist/{chunk-MIU3DKLN.js.map → chunk-GNR3QAER.js.map} +0 -0
- /package/dist/{chunk-BMJX2IDQ.js.map → chunk-H7PRCVGQ.js.map} +0 -0
- /package/dist/{chunk-6LTNFMXO.js.map → chunk-KC7ENQTN.js.map} +0 -0
- /package/dist/{chunk-ND4VK6C7.js.map → chunk-L25U7PIG.js.map} +0 -0
- /package/dist/{chunk-UKWO26VI.js.map → chunk-YTANWAGE.js.map} +0 -0
- /package/dist/{cli-BLYNNKGJ.js.map → cli-K7SUTP7A.js.map} +0 -0
- /package/dist/{client-5GB4WVXE.js.map → client-YJMNTITQ.js.map} +0 -0
- /package/dist/{config-5FGLQGCW.js.map → config-G5GGT5A6.js.map} +0 -0
- /package/dist/{detect-providers-BIHYFK5M.js.map → detect-providers-S3M5TAMW.js.map} +0 -0
- /package/dist/{logs-BSTBZHDR.js.map → logs-IENORIYR.js.map} +0 -0
- /package/dist/{search-E5JQMTXV.js.map → search-2BVRF54H.js.map} +0 -0
- /package/dist/{session-QF6MILAC.js.map → session-F326AWCH.js.map} +0 -0
- /package/dist/{session-start-5MFEOVQ5.js.map → session-start-AZAF3DTE.js.map} +0 -0
- /package/dist/{setup-digest-DZAFIBEF.js.map → setup-digest-YLZZGSSR.js.map} +0 -0
- /package/dist/{setup-llm-4BZM33YT.js.map → setup-llm-JOXBSLXC.js.map} +0 -0
- /package/dist/{verify-RACBFT2P.js.map → verify-7DW7LAND.js.map} +0 -0
- /package/dist/{version-HJTVNPOO.js.map → version-RQLD7VBP.js.map} +0 -0
package/README.md
CHANGED
|
@@ -70,6 +70,10 @@ An MCP server exposes the vault to any agent runtime. The digest extract is inje
|
|
|
70
70
|
|
|
71
71
|
Sessions link to plans. Plans link to decisions. Decisions link to spores. Obsidian backlinks and metadata create a navigable graph of your team's institutional knowledge. Open the vault in [Obsidian](https://obsidian.md) to browse it visually, or let agents traverse it via MCP tools.
|
|
72
72
|
|
|
73
|
+
### Dashboard
|
|
74
|
+
|
|
75
|
+
A local web dashboard at `http://localhost:<port>/` provides configuration management and operational triggers — no CLI or YAML editing needed. Manage intelligence providers, run curation and digest cycles, monitor daemon health, and view live logs. The daemon writes a `_portal.md` to your vault with the URL, so you can find it from Obsidian.
|
|
76
|
+
|
|
73
77
|
### Multi-agent
|
|
74
78
|
|
|
75
79
|
Myco reads conversation transcripts from Claude Code, Cursor, and any agent that writes JSONL transcripts. Screenshots shared during sessions are extracted and embedded as Obsidian image attachments. A plugin adapter registry makes adding new agents straightforward.
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
} from "./chunk-
|
|
3
|
+
external_exports
|
|
4
|
+
} from "./chunk-MQSYSQ6T.js";
|
|
5
|
+
import {
|
|
6
|
+
CANDIDATE_CONTENT_PREVIEW
|
|
7
|
+
} from "./chunk-6BSDCZ5Q.js";
|
|
5
8
|
import {
|
|
6
9
|
__commonJS,
|
|
7
10
|
__require,
|
|
@@ -3380,7 +3383,7 @@ var require_parse = __commonJS({
|
|
|
3380
3383
|
var require_gray_matter = __commonJS({
|
|
3381
3384
|
"node_modules/gray-matter/index.js"(exports2, module2) {
|
|
3382
3385
|
"use strict";
|
|
3383
|
-
var
|
|
3386
|
+
var fs3 = __require("fs");
|
|
3384
3387
|
var sections = require_section_matter();
|
|
3385
3388
|
var defaults = require_defaults();
|
|
3386
3389
|
var stringify = require_stringify();
|
|
@@ -3464,7 +3467,7 @@ var require_gray_matter = __commonJS({
|
|
|
3464
3467
|
return stringify(file, data, options2);
|
|
3465
3468
|
};
|
|
3466
3469
|
matter2.read = function(filepath, options2) {
|
|
3467
|
-
const str2 =
|
|
3470
|
+
const str2 = fs3.readFileSync(filepath, "utf8");
|
|
3468
3471
|
const file = matter2(str2, options2);
|
|
3469
3472
|
file.path = filepath;
|
|
3470
3473
|
return file;
|
|
@@ -3496,6 +3499,101 @@ var require_gray_matter = __commonJS({
|
|
|
3496
3499
|
var import_gray_matter = __toESM(require_gray_matter(), 1);
|
|
3497
3500
|
import fs from "fs";
|
|
3498
3501
|
import path from "path";
|
|
3502
|
+
|
|
3503
|
+
// src/vault/types.ts
|
|
3504
|
+
var SessionFrontmatterSchema = external_exports.object({
|
|
3505
|
+
type: external_exports.literal("session"),
|
|
3506
|
+
id: external_exports.string(),
|
|
3507
|
+
agent: external_exports.string(),
|
|
3508
|
+
user: external_exports.string(),
|
|
3509
|
+
started: external_exports.string(),
|
|
3510
|
+
ended: external_exports.string().optional(),
|
|
3511
|
+
parent: external_exports.string().optional(),
|
|
3512
|
+
parent_reason: external_exports.string().optional(),
|
|
3513
|
+
plan: external_exports.string().optional(),
|
|
3514
|
+
// backward compat read path
|
|
3515
|
+
plans: external_exports.array(external_exports.string()).optional(),
|
|
3516
|
+
// new: multiple plans
|
|
3517
|
+
branch: external_exports.string().optional(),
|
|
3518
|
+
tags: external_exports.array(external_exports.string()).default([]),
|
|
3519
|
+
tools_used: external_exports.number().int().optional(),
|
|
3520
|
+
files_changed: external_exports.number().int().optional()
|
|
3521
|
+
});
|
|
3522
|
+
var PLAN_STATUSES = ["active", "in_progress", "completed", "abandoned"];
|
|
3523
|
+
var PlanFrontmatterSchema = external_exports.object({
|
|
3524
|
+
type: external_exports.literal("plan"),
|
|
3525
|
+
id: external_exports.string(),
|
|
3526
|
+
status: external_exports.enum(PLAN_STATUSES).default("active"),
|
|
3527
|
+
created: external_exports.string(),
|
|
3528
|
+
author: external_exports.string().optional(),
|
|
3529
|
+
tags: external_exports.array(external_exports.string()).default([])
|
|
3530
|
+
});
|
|
3531
|
+
var OBSERVATION_TYPES = ["gotcha", "bug_fix", "decision", "discovery", "trade_off", "cross-cutting"];
|
|
3532
|
+
var SPORE_STATUSES = ["active", "superseded", "archived"];
|
|
3533
|
+
var SporeFrontmatterSchema = external_exports.object({
|
|
3534
|
+
type: external_exports.literal("spore"),
|
|
3535
|
+
id: external_exports.string(),
|
|
3536
|
+
observation_type: external_exports.string(),
|
|
3537
|
+
status: external_exports.enum(SPORE_STATUSES).default("active"),
|
|
3538
|
+
session: external_exports.string().optional(),
|
|
3539
|
+
plan: external_exports.string().optional(),
|
|
3540
|
+
superseded_by: external_exports.string().optional(),
|
|
3541
|
+
consolidated_from: external_exports.array(external_exports.string()).optional(),
|
|
3542
|
+
created: external_exports.string(),
|
|
3543
|
+
tags: external_exports.array(external_exports.string()).default([])
|
|
3544
|
+
});
|
|
3545
|
+
var ARTIFACT_TYPES = ["spec", "plan", "rfc", "doc", "other"];
|
|
3546
|
+
var ArtifactFrontmatterSchema = external_exports.object({
|
|
3547
|
+
type: external_exports.literal("artifact"),
|
|
3548
|
+
id: external_exports.string(),
|
|
3549
|
+
artifact_type: external_exports.enum(ARTIFACT_TYPES).default("other"),
|
|
3550
|
+
source_path: external_exports.string(),
|
|
3551
|
+
title: external_exports.string(),
|
|
3552
|
+
last_captured_by: external_exports.string(),
|
|
3553
|
+
created: external_exports.string(),
|
|
3554
|
+
updated: external_exports.string(),
|
|
3555
|
+
tags: external_exports.array(external_exports.string()).default([])
|
|
3556
|
+
});
|
|
3557
|
+
var TeamMemberFrontmatterSchema = external_exports.object({
|
|
3558
|
+
type: external_exports.literal("team-member"),
|
|
3559
|
+
user: external_exports.string(),
|
|
3560
|
+
joined: external_exports.string(),
|
|
3561
|
+
role: external_exports.string().optional(),
|
|
3562
|
+
tags: external_exports.array(external_exports.string()).default([])
|
|
3563
|
+
});
|
|
3564
|
+
var schemasByType = {
|
|
3565
|
+
session: SessionFrontmatterSchema,
|
|
3566
|
+
plan: PlanFrontmatterSchema,
|
|
3567
|
+
spore: SporeFrontmatterSchema,
|
|
3568
|
+
artifact: ArtifactFrontmatterSchema,
|
|
3569
|
+
"team-member": TeamMemberFrontmatterSchema
|
|
3570
|
+
};
|
|
3571
|
+
function parseNoteFrontmatter(data) {
|
|
3572
|
+
const type = data.type;
|
|
3573
|
+
const schema = schemasByType[type];
|
|
3574
|
+
if (!schema) {
|
|
3575
|
+
throw new Error(`Unknown note type: ${type}. Known types: ${Object.keys(schemasByType).join(", ")}`);
|
|
3576
|
+
}
|
|
3577
|
+
const coerced = coerceDatesToStrings(data);
|
|
3578
|
+
return schema.parse(coerced);
|
|
3579
|
+
}
|
|
3580
|
+
function coerceDatesToStrings(obj) {
|
|
3581
|
+
const result = {};
|
|
3582
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
3583
|
+
if (value instanceof Date) {
|
|
3584
|
+
result[key] = value.toISOString();
|
|
3585
|
+
} else if (Array.isArray(value)) {
|
|
3586
|
+
result[key] = value.map((item) => item instanceof Date ? item.toISOString() : item);
|
|
3587
|
+
} else if (value !== null && typeof value === "object" && !Array.isArray(value)) {
|
|
3588
|
+
result[key] = coerceDatesToStrings(value);
|
|
3589
|
+
} else {
|
|
3590
|
+
result[key] = value;
|
|
3591
|
+
}
|
|
3592
|
+
}
|
|
3593
|
+
return result;
|
|
3594
|
+
}
|
|
3595
|
+
|
|
3596
|
+
// src/vault/reader.ts
|
|
3499
3597
|
var VAULT_SUBDIRS = ["sessions", "plans", "spores", "artifacts", "team"];
|
|
3500
3598
|
var VaultReader = class {
|
|
3501
3599
|
constructor(vaultDir) {
|
|
@@ -3573,10 +3671,161 @@ function extractTitle(content) {
|
|
|
3573
3671
|
return match ? match[1].trim() : "";
|
|
3574
3672
|
}
|
|
3575
3673
|
|
|
3674
|
+
// src/intelligence/response.ts
|
|
3675
|
+
var REASONING_PATTERNS = [
|
|
3676
|
+
// <think>...</think>answer (DeepSeek, Qwen, GLM, many others)
|
|
3677
|
+
/<think>[\s\S]*?<\/think>\s*/gi,
|
|
3678
|
+
// Implicit opening: reasoning...</think>answer (GLM-4.7 observed)
|
|
3679
|
+
/^[\s\S]*?<\/think>\s*/i,
|
|
3680
|
+
// <reasoning>...</reasoning>answer
|
|
3681
|
+
/<reasoning>[\s\S]*?<\/reasoning>\s*/gi,
|
|
3682
|
+
// <|thinking|>...<|/thinking|>answer
|
|
3683
|
+
/<\|thinking\|>[\s\S]*?<\|\/thinking\|>\s*/gi,
|
|
3684
|
+
// Plain-text "Thinking Process:" block followed by actual content
|
|
3685
|
+
// (Qwen 3.5 via LM Studio without native thinking mode)
|
|
3686
|
+
// Matches from "Thinking Process:" up to the last numbered step, then the synthesis follows
|
|
3687
|
+
/^Thinking Process:[\s\S]*?(?=\n(?:## |# |\*\*[A-Z]))/i
|
|
3688
|
+
];
|
|
3689
|
+
function stripReasoningTokens(text) {
|
|
3690
|
+
if (!text) return text;
|
|
3691
|
+
for (const pattern of REASONING_PATTERNS) {
|
|
3692
|
+
const stripped = text.replace(pattern, "").trim();
|
|
3693
|
+
if (stripped && stripped !== text.trim()) {
|
|
3694
|
+
return stripped;
|
|
3695
|
+
}
|
|
3696
|
+
}
|
|
3697
|
+
return text;
|
|
3698
|
+
}
|
|
3699
|
+
function extractJson(text) {
|
|
3700
|
+
const cleaned = stripReasoningTokens(text);
|
|
3701
|
+
const fenceMatch = cleaned.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/);
|
|
3702
|
+
if (fenceMatch) {
|
|
3703
|
+
return JSON.parse(fenceMatch[1].trim());
|
|
3704
|
+
}
|
|
3705
|
+
const objectMatch = cleaned.match(/\{[\s\S]*\}/);
|
|
3706
|
+
if (objectMatch) {
|
|
3707
|
+
return JSON.parse(objectMatch[0]);
|
|
3708
|
+
}
|
|
3709
|
+
return JSON.parse(cleaned);
|
|
3710
|
+
}
|
|
3711
|
+
function extractNumber(text) {
|
|
3712
|
+
const cleaned = stripReasoningTokens(text).trim();
|
|
3713
|
+
const match = cleaned.match(/(\d+\.?\d*)/);
|
|
3714
|
+
if (match) return parseFloat(match[1]);
|
|
3715
|
+
return parseFloat(cleaned);
|
|
3716
|
+
}
|
|
3717
|
+
|
|
3718
|
+
// src/prompts/index.ts
|
|
3719
|
+
import fs2 from "fs";
|
|
3720
|
+
import path2 from "path";
|
|
3721
|
+
import { fileURLToPath } from "url";
|
|
3722
|
+
function resolvePromptsDir() {
|
|
3723
|
+
let dir = path2.dirname(fileURLToPath(import.meta.url));
|
|
3724
|
+
for (let i = 0; i < 5; i++) {
|
|
3725
|
+
if (fs2.existsSync(path2.join(dir, "package.json"))) {
|
|
3726
|
+
return path2.join(dir, "dist", "src", "prompts");
|
|
3727
|
+
}
|
|
3728
|
+
if (fs2.existsSync(path2.join(dir, "extraction.md"))) {
|
|
3729
|
+
return dir;
|
|
3730
|
+
}
|
|
3731
|
+
dir = path2.dirname(dir);
|
|
3732
|
+
}
|
|
3733
|
+
return path2.dirname(fileURLToPath(import.meta.url));
|
|
3734
|
+
}
|
|
3735
|
+
var PROMPTS_DIR = resolvePromptsDir();
|
|
3736
|
+
var promptCache = /* @__PURE__ */ new Map();
|
|
3737
|
+
function loadPrompt(name) {
|
|
3738
|
+
let cached = promptCache.get(name);
|
|
3739
|
+
if (!cached) {
|
|
3740
|
+
cached = fs2.readFileSync(path2.join(PROMPTS_DIR, `${name}.md`), "utf-8").trim();
|
|
3741
|
+
promptCache.set(name, cached);
|
|
3742
|
+
}
|
|
3743
|
+
return cached;
|
|
3744
|
+
}
|
|
3745
|
+
function interpolate(template, vars) {
|
|
3746
|
+
let result = template;
|
|
3747
|
+
for (const [key, value] of Object.entries(vars)) {
|
|
3748
|
+
result = result.replaceAll(`{{${key}}}`, value);
|
|
3749
|
+
}
|
|
3750
|
+
return result;
|
|
3751
|
+
}
|
|
3752
|
+
function formatNoteForPrompt(note) {
|
|
3753
|
+
return `[${note.id}] ${note.title}
|
|
3754
|
+
${note.content}`;
|
|
3755
|
+
}
|
|
3756
|
+
function formatNotesForPrompt(notes) {
|
|
3757
|
+
return notes.map(formatNoteForPrompt).join("\n\n");
|
|
3758
|
+
}
|
|
3759
|
+
function buildExtractionPrompt(sessionId, eventCount, toolSummary, maxTokens) {
|
|
3760
|
+
return interpolate(loadPrompt("extraction"), {
|
|
3761
|
+
sessionId,
|
|
3762
|
+
eventCount: String(eventCount),
|
|
3763
|
+
toolSummary,
|
|
3764
|
+
maxTokens: String(maxTokens ?? 2048)
|
|
3765
|
+
});
|
|
3766
|
+
}
|
|
3767
|
+
function buildSummaryPrompt(sessionId, user, content, maxTokens) {
|
|
3768
|
+
return interpolate(loadPrompt("summary"), {
|
|
3769
|
+
sessionId,
|
|
3770
|
+
user,
|
|
3771
|
+
content,
|
|
3772
|
+
maxTokens: String(maxTokens ?? 1024)
|
|
3773
|
+
});
|
|
3774
|
+
}
|
|
3775
|
+
function buildTitlePrompt(summary, sessionId) {
|
|
3776
|
+
return interpolate(loadPrompt("title"), {
|
|
3777
|
+
summary,
|
|
3778
|
+
sessionId
|
|
3779
|
+
});
|
|
3780
|
+
}
|
|
3781
|
+
var ARTIFACT_TYPE_DESCRIPTIONS = [
|
|
3782
|
+
'"spec" \u2014 Design specifications, architecture documents',
|
|
3783
|
+
'"plan" \u2014 Implementation plans, roadmaps',
|
|
3784
|
+
'"rfc" \u2014 Requests for comment, proposals',
|
|
3785
|
+
'"doc" \u2014 Documentation, guides, READMEs',
|
|
3786
|
+
'"other" \u2014 Other substantive documents'
|
|
3787
|
+
];
|
|
3788
|
+
function buildSimilarityPrompt(currentSummary, candidateSummary) {
|
|
3789
|
+
return interpolate(loadPrompt("session-similarity"), {
|
|
3790
|
+
currentSummary,
|
|
3791
|
+
candidateSummary
|
|
3792
|
+
});
|
|
3793
|
+
}
|
|
3794
|
+
function buildClassificationPrompt(sessionId, candidates, maxTokens) {
|
|
3795
|
+
const fileList = candidates.map((c) => {
|
|
3796
|
+
const truncated = c.content.slice(0, CANDIDATE_CONTENT_PREVIEW);
|
|
3797
|
+
return `### ${c.path}
|
|
3798
|
+
\`\`\`
|
|
3799
|
+
${truncated}
|
|
3800
|
+
\`\`\``;
|
|
3801
|
+
}).join("\n\n");
|
|
3802
|
+
return interpolate(loadPrompt("classification"), {
|
|
3803
|
+
sessionId,
|
|
3804
|
+
fileList,
|
|
3805
|
+
artifactTypes: ARTIFACT_TYPE_DESCRIPTIONS.map((d) => `- ${d}`).join("\n"),
|
|
3806
|
+
validTypes: ARTIFACT_TYPES.join("|"),
|
|
3807
|
+
maxTokens: String(maxTokens ?? 1024)
|
|
3808
|
+
});
|
|
3809
|
+
}
|
|
3810
|
+
|
|
3576
3811
|
export {
|
|
3577
3812
|
require_gray_matter,
|
|
3813
|
+
PLAN_STATUSES,
|
|
3814
|
+
OBSERVATION_TYPES,
|
|
3815
|
+
ARTIFACT_TYPES,
|
|
3578
3816
|
indexNote,
|
|
3579
|
-
rebuildIndex
|
|
3817
|
+
rebuildIndex,
|
|
3818
|
+
stripReasoningTokens,
|
|
3819
|
+
extractJson,
|
|
3820
|
+
extractNumber,
|
|
3821
|
+
loadPrompt,
|
|
3822
|
+
formatNoteForPrompt,
|
|
3823
|
+
formatNotesForPrompt,
|
|
3824
|
+
buildExtractionPrompt,
|
|
3825
|
+
buildSummaryPrompt,
|
|
3826
|
+
buildTitlePrompt,
|
|
3827
|
+
buildSimilarityPrompt,
|
|
3828
|
+
buildClassificationPrompt
|
|
3580
3829
|
};
|
|
3581
3830
|
/*! Bundled license information:
|
|
3582
3831
|
|
|
@@ -3596,4 +3845,4 @@ strip-bom-string/index.js:
|
|
|
3596
3845
|
* Released under the MIT License.
|
|
3597
3846
|
*)
|
|
3598
3847
|
*/
|
|
3599
|
-
//# sourceMappingURL=chunk-
|
|
3848
|
+
//# sourceMappingURL=chunk-24DOZEUJ.js.map
|