@wenaixi/dsh-ponytail 4.9.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.
Files changed (40) hide show
  1. package/AGENTS.md +32 -0
  2. package/CHANGELOG.md +26 -0
  3. package/LICENSE +21 -0
  4. package/README.en.md +100 -0
  5. package/README.md +139 -0
  6. package/assets/benchmark-3model.svg +21 -0
  7. package/assets/benchmark-agentic.svg +62 -0
  8. package/assets/logo-dark.png +0 -0
  9. package/assets/logo-dark.svg +115 -0
  10. package/assets/logo-greenpt-dark.svg +27 -0
  11. package/assets/logo-greenpt.svg +27 -0
  12. package/assets/logo.png +0 -0
  13. package/assets/social-preview.png +0 -0
  14. package/assets/waitlist-banner-es.png +0 -0
  15. package/assets/waitlist-banner-ko.png +0 -0
  16. package/assets/waitlist-banner.png +0 -0
  17. package/cordis.patch.yml +3 -0
  18. package/lib/ponytail-config.d.ts +28 -0
  19. package/lib/ponytail-config.d.ts.map +1 -0
  20. package/lib/ponytail-config.js +125 -0
  21. package/lib/ponytail-config.js.map +1 -0
  22. package/lib/ponytail-instructions.d.ts +5 -0
  23. package/lib/ponytail-instructions.d.ts.map +1 -0
  24. package/lib/ponytail-instructions.js +81 -0
  25. package/lib/ponytail-instructions.js.map +1 -0
  26. package/lib/ponytail-runtime.d.ts +16 -0
  27. package/lib/ponytail-runtime.d.ts.map +1 -0
  28. package/lib/ponytail-runtime.js +63 -0
  29. package/lib/ponytail-runtime.js.map +1 -0
  30. package/lib/ponytail.d.ts +74 -0
  31. package/lib/ponytail.d.ts.map +1 -0
  32. package/lib/ponytail.js +553 -0
  33. package/lib/ponytail.js.map +1 -0
  34. package/package.json +77 -0
  35. package/skills/ponytail/SKILL.md +77 -0
  36. package/skills/ponytail-audit/SKILL.md +31 -0
  37. package/skills/ponytail-debt/SKILL.md +31 -0
  38. package/skills/ponytail-gain/SKILL.md +37 -0
  39. package/skills/ponytail-help/SKILL.md +65 -0
  40. package/skills/ponytail-review/SKILL.md +45 -0
@@ -0,0 +1,81 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { DEFAULT_MODE, normalizeMode, normalizePersistedMode } from './ponytail-config.js';
4
+ const INDEPENDENT_MODES = new Set(['review']);
5
+ export function filterSkillBodyForMode(body, mode) {
6
+ const effectiveMode = normalizeMode(mode) ?? DEFAULT_MODE;
7
+ const withoutFrontmatter = String(body ?? '').replace(/^---[\s\S]*?---\s*/, '');
8
+ return withoutFrontmatter
9
+ .split(/\r?\n/)
10
+ .filter((line) => {
11
+ const tableLabel = line.match(/^\|\s*\*\*(.+?)\*\*\s*\|/);
12
+ if (tableLabel) {
13
+ const labelMode = normalizeMode(tableLabel[1].trim());
14
+ if (labelMode)
15
+ return labelMode === effectiveMode;
16
+ }
17
+ const exampleLabel = line.match(/^-\s*([^:]+):\s*"/);
18
+ if (exampleLabel) {
19
+ const labelMode = normalizeMode(exampleLabel[1].trim());
20
+ if (labelMode)
21
+ return labelMode === effectiveMode;
22
+ }
23
+ return true;
24
+ })
25
+ .join('\n');
26
+ }
27
+ export function getFallbackInstructions(mode) {
28
+ const m = mode;
29
+ return ('PONYTAIL 已激活 \u2014 等级:' +
30
+ m +
31
+ '\n\n' +
32
+ '你是一位懒惰的资深工程师,懒惰意味着高效,而不是马虎。最好的代码就是没写的代码。\n\n' +
33
+ '## 持久化\n\n' +
34
+ '每一次回复都生效,不会退化。仅在「stop ponytail / 正常模式」时关闭。\n\n' +
35
+ '当前等级:**' +
36
+ m +
37
+ '**,切换方式:`/ponytail lite|full|ultra`。\n\n' +
38
+ '## 梯子\n\n' +
39
+ '写代码前,先站在第一个站得住的横档上(先理解问题,再选解法):\n' +
40
+ '1. 这东西真的需要存在吗?(YAGNI)\n' +
41
+ '2. 代码库里已经有了吗?直接复用,不要重写。\n' +
42
+ '3. 标准库能做吗?用标准库。\n' +
43
+ '4. 平台原生能力能覆盖吗?用原生。\n' +
44
+ '5. 已安装的依赖能解决吗?用它。\n' +
45
+ '6. 能用一行写完吗?就写一行。\n' +
46
+ '7. 只有到这里:再写能工作的最小代码。\n\n' +
47
+ '修 Bug = 修根因:先 grep 要改函数的所有调用方,在共享函数里修一次,而不是在每个调用方各打一个补丁。\n\n' +
48
+ '## 规则\n\n' +
49
+ '不做未被要求的抽象,不引入可避免的依赖,不写没人要的样板。删除优于新增,无聊优于巧妙,文件数越少越好。' +
50
+ '先给懒人版,并在同一条回复里追问复杂需求是否真的需要。两个等大的标准库方案选边界更正确的那个。' +
51
+ '有意简化的已知天花板用 `ponytail:` 注释标出天花板和升级路径。\n\n' +
52
+ '## 输出\n\n' +
53
+ '先给代码,再用最多三行短句说明跳过了什么、何时再加。若解释比代码还长,删掉解释。用户明确要求的解释请完整给出。\n\n' +
54
+ '## 何时不要偷懒\n\n' +
55
+ '永远不要为偷懒而简化掉:对问题的完整理解、信任边界的输入校验、防止数据丢失的错误处理、安全、无障碍、硬件所需的校准、用户明确要求保留的内容。' +
56
+ '非平凡逻辑留下一个可运行的最小校验(基于 assert 的自检或单个小测试文件),平凡的一行不需要测试。\n\n' +
57
+ '## 边界\n\n' +
58
+ 'Ponytail 管的是怎么构建,而不是怎么说话。「stop ponytail / 正常模式」即退出,等级保持到被修改或会话结束。');
59
+ }
60
+ export function getPonytailInstructions(mode, skillPath) {
61
+ const configuredMode = normalizePersistedMode(mode) ?? DEFAULT_MODE;
62
+ if (INDEPENDENT_MODES.has(configuredMode)) {
63
+ return 'PONYTAIL 已激活 \u2014 等级:' + configuredMode + ',行为由 /ponytail-' + configuredMode + ' 技能定义。';
64
+ }
65
+ const effectiveMode = normalizeMode(configuredMode) ?? DEFAULT_MODE;
66
+ if (skillPath) {
67
+ try {
68
+ const raw = readFileSync(skillPath, 'utf8');
69
+ return 'PONYTAIL 已激活 \u2014 等级:' + effectiveMode + '\n\n' + filterSkillBodyForMode(raw, effectiveMode);
70
+ }
71
+ catch {
72
+ return getFallbackInstructions(effectiveMode);
73
+ }
74
+ }
75
+ return getFallbackInstructions(effectiveMode);
76
+ }
77
+ // 兼容旧路径解析:给定 skillDir 返回主技能路径
78
+ export function getMainSkillPath(skillDir) {
79
+ return join(skillDir, 'ponytail', 'SKILL.md');
80
+ }
81
+ //# sourceMappingURL=ponytail-instructions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ponytail-instructions.js","sourceRoot":"","sources":["../src/ponytail-instructions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * ponytail-runtime — 移植自 hooks/ponytail-runtime.js
3
+ *
4
+ * flag 文件 + 多平台环境识别。
5
+ * DSH 侧以文件为真源,保持与 Claude/Codex/Qoder 共存语义;
6
+ * HMR 卸载时不残留句柄。
7
+ */
8
+ export declare const isCopilot: boolean;
9
+ export declare const isCodex: boolean;
10
+ export declare const isQoder: boolean;
11
+ export declare function setMode(mode: string): void;
12
+ export declare function clearMode(): void;
13
+ export declare function readMode(): string | null;
14
+ export declare function writeHookOutput(_event: string, _mode: string, _context?: string): void;
15
+ export declare function getStatePath(): string;
16
+ //# sourceMappingURL=ponytail-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ponytail-runtime.d.ts","sourceRoot":"","sources":["../src/ponytail-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAeH,eAAO,MAAM,SAAS,EAAE,OAC+E,CAAA;AAEvG,eAAO,MAAM,OAAO,EAAE,OAA2D,CAAA;AACjF,eAAO,MAAM,OAAO,EAAE,OAA4E,CAAA;AAclG,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAI1C;AAED,wBAAgB,SAAS,IAAI,IAAI,CAMhC;AAED,wBAAgB,QAAQ,IAAI,MAAM,GAAG,IAAI,CAOxC;AAGD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,IAAI,CAElF;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * ponytail-runtime — 移植自 hooks/ponytail-runtime.js
3
+ *
4
+ * flag 文件 + 多平台环境识别。
5
+ * DSH 侧以文件为真源,保持与 Claude/Codex/Qoder 共存语义;
6
+ * HMR 卸载时不残留句柄。
7
+ */
8
+ import { mkdirSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs';
9
+ import os from 'node:os';
10
+ import path from 'node:path';
11
+ import { getClaudeDir } from './ponytail-config.js';
12
+ const STATE_FILE = '.ponytail-active';
13
+ function isVsCodeCopilotRoot(pluginRoot) {
14
+ if (!pluginRoot)
15
+ return false;
16
+ return pluginRoot.split(/[\\/]+/).includes('agent-plugins') && pluginRoot.toLowerCase().includes('.vscode');
17
+ }
18
+ export const isCopilot = Boolean(process.env['COPILOT_PLUGIN_DATA']) || isVsCodeCopilotRoot(process.env['CLAUDE_PLUGIN_ROOT']);
19
+ export const isCodex = !isCopilot && Boolean(process.env['PLUGIN_DATA']);
20
+ export const isQoder = !isCopilot && !isCodex && Boolean(process.env['QODER_SESSION_ID']);
21
+ function resolveStateDir() {
22
+ let dir = getClaudeDir();
23
+ if (isCodex)
24
+ dir = process.env['PLUGIN_DATA'];
25
+ if (isCopilot)
26
+ dir = process.env['COPILOT_PLUGIN_DATA'] ?? getClaudeDir();
27
+ if (isQoder)
28
+ dir = path.join(os.homedir(), '.qoder');
29
+ return dir;
30
+ }
31
+ function statePath() {
32
+ return path.join(resolveStateDir(), STATE_FILE);
33
+ }
34
+ export function setMode(mode) {
35
+ const p = statePath();
36
+ mkdirSync(path.dirname(p), { recursive: true });
37
+ writeFileSync(p, mode, 'utf8');
38
+ }
39
+ export function clearMode() {
40
+ try {
41
+ unlinkSync(statePath());
42
+ }
43
+ catch {
44
+ // ignore
45
+ }
46
+ }
47
+ export function readMode() {
48
+ try {
49
+ const v = readFileSync(statePath(), 'utf8').trim();
50
+ return v || null;
51
+ }
52
+ catch {
53
+ return null;
54
+ }
55
+ }
56
+ // DSH 侧不走 stdout JSON,改为无操作兼容层;真实注入由 systemPrompt + agent 事件完成
57
+ export function writeHookOutput(_event, _mode, _context = '') {
58
+ // no-op in DSH — kept for upstream parity
59
+ }
60
+ export function getStatePath() {
61
+ return statePath();
62
+ }
63
+ //# sourceMappingURL=ponytail-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ponytail-runtime.js","sourceRoot":"","sources":["../src/ponytail-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5E,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,MAAM,UAAU,GAAG,kBAAkB,CAAA;AAErC,SAAS,mBAAmB,CAAC,UAA8B;IACzD,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAA;IAC7B,OAAO,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;AAC7G,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GACpB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,IAAI,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAA;AAEvG,MAAM,CAAC,MAAM,OAAO,GAAY,CAAC,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAA;AACjF,MAAM,CAAC,MAAM,OAAO,GAAY,CAAC,SAAS,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAA;AAElG,SAAS,eAAe;IACtB,IAAI,GAAG,GAAG,YAAY,EAAE,CAAA;IACxB,IAAI,OAAO;QAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAE,CAAA;IAC9C,IAAI,SAAS;QAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,YAAY,EAAE,CAAA;IACzE,IAAI,OAAO;QAAE,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAA;IACpD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,UAAU,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,MAAM,CAAC,GAAG,SAAS,EAAE,CAAA;IACrB,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC/C,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC;QACH,UAAU,CAAC,SAAS,EAAE,CAAC,CAAA;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;QAClD,OAAO,CAAC,IAAI,IAAI,CAAA;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,KAAa,EAAE,QAAQ,GAAG,EAAE;IAC1E,0CAA0C;AAC5C,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,SAAS,EAAE,CAAA;AACpB,CAAC"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * dsh-ponytail — DSH 完整移植版 ponytail (dietrichgebert/ponytail 4.9.0)
3
+ *
4
+ * 能力全集:
5
+ * - always-on 梯子注入(systemPrompt section,随 mode 动态裁剪)
6
+ * - 6 个 skill:ponytail / ponytail-review / ponytail-audit / ponytail-debt / ponytail-gain / ponytail-help
7
+ * - 完整复刻 hooks 行为:activate / mode-tracker / subagent / config / instructions / runtime
8
+ * - 不注册空 tool,全部能力经 Skill 暴露
9
+ */
10
+ import type { Context } from '@deepseek-ai/cordis';
11
+ import Schema from '@deepseek-ai/schemastery';
12
+ export declare const Config: Schema<Schemastery.ObjectS<{
13
+ /** 注册到 ctx.skills 的 provider 名称 */
14
+ providerName: Schema<string, string>;
15
+ /** skill 目录绝对路径,默认取包内 skills/ */
16
+ skillDir: Schema<string, string>;
17
+ /** 默认强度,off 则不自动激活 */
18
+ defaultMode: Schema<"full" | "off" | "lite" | "ultra", "full" | "off" | "lite" | "ultra">;
19
+ /** 是否隐藏状态提示(兼容上游 hideStatus) */
20
+ hideStatus: Schema<boolean, boolean>;
21
+ /** 是否静默启动提示 */
22
+ quietStartup: Schema<boolean, boolean>;
23
+ }>, Schemastery.ObjectT<{
24
+ /** 注册到 ctx.skills 的 provider 名称 */
25
+ providerName: Schema<string, string>;
26
+ /** skill 目录绝对路径,默认取包内 skills/ */
27
+ skillDir: Schema<string, string>;
28
+ /** 默认强度,off 则不自动激活 */
29
+ defaultMode: Schema<"full" | "off" | "lite" | "ultra", "full" | "off" | "lite" | "ultra">;
30
+ /** 是否隐藏状态提示(兼容上游 hideStatus) */
31
+ hideStatus: Schema<boolean, boolean>;
32
+ /** 是否静默启动提示 */
33
+ quietStartup: Schema<boolean, boolean>;
34
+ }>>;
35
+ export interface Config {
36
+ providerName?: string;
37
+ skillDir?: string;
38
+ defaultMode?: 'off' | 'lite' | 'full' | 'ultra';
39
+ hideStatus?: boolean;
40
+ quietStartup?: boolean;
41
+ }
42
+ export declare const name = "ponytail";
43
+ export declare const inject: readonly ["skills", "systemPrompt"];
44
+ export declare function apply(ctx: Context, config?: Config): void;
45
+ declare const _default: {
46
+ name: string;
47
+ inject: readonly ["skills", "systemPrompt"];
48
+ Config: Schema<Schemastery.ObjectS<{
49
+ /** 注册到 ctx.skills 的 provider 名称 */
50
+ providerName: Schema<string, string>;
51
+ /** skill 目录绝对路径,默认取包内 skills/ */
52
+ skillDir: Schema<string, string>;
53
+ /** 默认强度,off 则不自动激活 */
54
+ defaultMode: Schema<"full" | "off" | "lite" | "ultra", "full" | "off" | "lite" | "ultra">;
55
+ /** 是否隐藏状态提示(兼容上游 hideStatus) */
56
+ hideStatus: Schema<boolean, boolean>;
57
+ /** 是否静默启动提示 */
58
+ quietStartup: Schema<boolean, boolean>;
59
+ }>, Schemastery.ObjectT<{
60
+ /** 注册到 ctx.skills 的 provider 名称 */
61
+ providerName: Schema<string, string>;
62
+ /** skill 目录绝对路径,默认取包内 skills/ */
63
+ skillDir: Schema<string, string>;
64
+ /** 默认强度,off 则不自动激活 */
65
+ defaultMode: Schema<"full" | "off" | "lite" | "ultra", "full" | "off" | "lite" | "ultra">;
66
+ /** 是否隐藏状态提示(兼容上游 hideStatus) */
67
+ hideStatus: Schema<boolean, boolean>;
68
+ /** 是否静默启动提示 */
69
+ quietStartup: Schema<boolean, boolean>;
70
+ }>>;
71
+ apply: typeof apply;
72
+ };
73
+ export default _default;
74
+ //# sourceMappingURL=ponytail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ponytail.d.ts","sourceRoot":"","sources":["../src/ponytail.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAQlD,OAAO,MAAM,MAAM,0BAA0B,CAAA;AAiB7C,eAAO,MAAM,MAAM;IACjB,mCAAmC;;IAEnC,iCAAiC;;IAEjC,sBAAsB;;IAEtB,gCAAgC;;IAEhC,eAAe;;;IARf,mCAAmC;;IAEnC,iCAAiC;;IAEjC,sBAAsB;;IAEtB,gCAAgC;;IAEhC,eAAe;;GAEf,CAAA;AAEF,MAAM,WAAW,MAAM;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;IAC/C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAMD,eAAO,MAAM,IAAI,aAAa,CAAA;AAC9B,eAAO,MAAM,MAAM,qCAAsC,CAAA;AAwPzD,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,GAAE,MAAqB,GAAG,IAAI,CAyQvE;;;;;QA1hBC,mCAAmC;;QAEnC,iCAAiC;;QAEjC,sBAAsB;;QAEtB,gCAAgC;;QAEhC,eAAe;;;QARf,mCAAmC;;QAEnC,iCAAiC;;QAEjC,sBAAsB;;QAEtB,gCAAgC;;QAEhC,eAAe;;;;;AAohBjB,wBAA8C"}