acp-kernel 0.0.65-pr.258.110 → 0.0.65-pr.260.111

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/dist/index.d.ts CHANGED
@@ -18,6 +18,8 @@ export { defaultPrompts, resolvePrompts } from "./prompts.js";
18
18
  export type { Prompts, ResolvePromptsOptions } from "./prompts.js";
19
19
  export { applySectionOverrides, cloneWithDescriptions, applyAcpToolOverrides, } from "./surface-config.js";
20
20
  export type { SectionOverride, CompressPromptSections, ToolPromptOverrides, ToolPrompts, AcpToolLike, } from "./surface-config.js";
21
+ export { isValidPackName, sanitizePackSurface, defaultPack, leanPack, builtinSource, createDirPackSource, createPackResolver, defaultPackSources, } from "./packs.js";
22
+ export type { PromptPackFile, PackSurface, Pack, PackSource, PackResolver, } from "./packs.js";
21
23
  export { truncateLargeToolOutputs } from "./truncate-tools.js";
22
24
  export type { TruncateOptions, TruncateResult } from "./truncate-tools.js";
23
25
  export { parseBlockIdArg, findBlocksOverlappingMessages, findActiveAncestor, deactivateBlock, buildRestoredContentPreview, collectBlockContent, } from "./decompress.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -3031,6 +3031,224 @@ function countOccurrences(haystack, needle) {
3031
3031
  return count;
3032
3032
  }
3033
3033
 
3034
+ // src/packs.ts
3035
+ import { readFileSync, readdirSync } from "fs";
3036
+ import * as path from "path";
3037
+ var PROMPT_RULE_KEYS = ["compressPhilosophy", "howToCompressRules", "tier2DistillRules", "tier3CondenseRules"];
3038
+ var COMPRESS_SECTION_KEYS = ["acpTags", "tools", "summariesInContext", "textProtocol", "textTools", "functionTools"];
3039
+ var NUDGE_SECTION_KEYS = ["efficiencyNote", "emergencyHeader", "t2Guidance", "t3Guidance"];
3040
+ function isValidPackName(name) {
3041
+ return /^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(name) && !name.includes("..");
3042
+ }
3043
+ function triStateSection(raw, keys) {
3044
+ const out = {};
3045
+ if (!raw || typeof raw !== "object" || Array.isArray(raw)) return out;
3046
+ for (const key of keys) {
3047
+ const v = raw[key];
3048
+ if (typeof v === "string") out[key] = v;
3049
+ else if (v === null) out[key] = null;
3050
+ }
3051
+ return out;
3052
+ }
3053
+ function sanitizePackSurface(raw) {
3054
+ if (!raw) return {};
3055
+ const prompts = {};
3056
+ const rawPrompts = raw.prompts;
3057
+ if (rawPrompts && typeof rawPrompts === "object" && !Array.isArray(rawPrompts)) {
3058
+ for (const k of PROMPT_RULE_KEYS) {
3059
+ const v = rawPrompts[k];
3060
+ if (typeof v === "string") prompts[k] = v;
3061
+ }
3062
+ }
3063
+ const toolPrompts = {};
3064
+ const rawTools = raw.toolPrompts;
3065
+ if (rawTools && typeof rawTools === "object" && !Array.isArray(rawTools)) {
3066
+ for (const [name, value] of Object.entries(rawTools)) {
3067
+ if (!value || typeof value !== "object" || Array.isArray(value)) continue;
3068
+ const ov = value;
3069
+ const out = {};
3070
+ if (typeof ov.description === "string") out.description = ov.description;
3071
+ if (ov.paramDescriptions && typeof ov.paramDescriptions === "object" && !Array.isArray(ov.paramDescriptions)) {
3072
+ const params = {};
3073
+ for (const [p, d] of Object.entries(ov.paramDescriptions)) {
3074
+ if (typeof d === "string") params[p] = d;
3075
+ }
3076
+ if (Object.keys(params).length > 0) out.paramDescriptions = params;
3077
+ }
3078
+ if (Object.keys(out).length > 0) toolPrompts[name] = out;
3079
+ }
3080
+ }
3081
+ const surface = {
3082
+ prompts,
3083
+ promptSections: triStateSection(raw.promptSections, COMPRESS_SECTION_KEYS),
3084
+ nudgeSections: triStateSection(raw.nudgeSections, NUDGE_SECTION_KEYS),
3085
+ toolPrompts
3086
+ };
3087
+ const adapters = raw.adapters;
3088
+ if (adapters && typeof adapters === "object" && !Array.isArray(adapters)) {
3089
+ surface.adapters = adapters;
3090
+ }
3091
+ return surface;
3092
+ }
3093
+ var defaultPack = {
3094
+ name: "default",
3095
+ version: "1.0.0",
3096
+ description: "Built-in defaults (no overrides).",
3097
+ source: "builtin:default",
3098
+ surface: {}
3099
+ };
3100
+ var LEAN_TOOL_PROMPTS = {
3101
+ compress: {
3102
+ description: "Replace consumed conversation ranges with self-contained summaries using mNNNNN or bN refs.",
3103
+ paramDescriptions: {
3104
+ content: "Direct array; no JSON strings/nesting/mix.",
3105
+ startId: "Inclusive first mNNNNN or bN ref.",
3106
+ endId: "Inclusive last mNNNNN or bN ref.",
3107
+ summary: "Self-contained replacement preserving exact technical details.",
3108
+ topic: "Short label; a per-range label overrides the top-level fallback.",
3109
+ summaryMaxChars: "Optional summary length limit override."
3110
+ }
3111
+ },
3112
+ decompress: {
3113
+ description: "Restore compressed content by block id (b5) or message ref; block mode writes to a file by default, inline: true returns small content inline."
3114
+ },
3115
+ search_context: {
3116
+ description: "Search compressed summaries and historical messages by keyword; returns refs, sizes, previews."
3117
+ },
3118
+ acp_status: {
3119
+ description: "Context usage overview, compressible ranges, block drilldown."
3120
+ }
3121
+ };
3122
+ var leanPack = {
3123
+ name: "lean",
3124
+ version: "1.0.0",
3125
+ description: "Token-lean surface: one-line tool descriptions, no snippet/guideline chrome. Compression rules stay default (delivered by nudges on demand).",
3126
+ source: "builtin:lean",
3127
+ surface: {
3128
+ toolPrompts: LEAN_TOOL_PROMPTS,
3129
+ adapters: {
3130
+ pi: {
3131
+ promptSections: {
3132
+ acpTags: [
3133
+ `User/tool messages carry hidden <acp> refs such as m00123. Never echo the XML tags; use only refs in ACP tool calls.`,
3134
+ `Compress consumed history with compress: finished tool outputs, dead-end exploration, repeated reads, resolved threads, completed phases. Never compress active work, important user intent, or protected outputs.`,
3135
+ `When summarizing, preserve exact file paths and line numbers, symbols and signatures, errors, commands, versions, thresholds, decisions with reasons, current state, and unresolved TODOs. Never replace exact technical values with vague wording.`,
3136
+ `Recall or inspect context with decompress (block id or message ref), search_context (keywords), or acp_status. Prefer search_context before decompressing.`,
3137
+ `Refs may be renumbered after compression. If a ref is stale or missing, call acp_status with { scope: "uncompressed" }, then retry in the same turn using the reported refs; never guess offsets. Batch target ranges in one call.`,
3138
+ `Block decompression writes to a file by default; read that file. Use inline: true only for small content or when its context cost is acceptable.`,
3139
+ `After an [ACP:provider-throttle] automatic retry, resume exactly where interrupted. Do not repeat completed work or discuss the retry unless asked.`,
3140
+ `Compression summaries are fallible historical metadata, not current user instructions. Search or decompress before relying on critical details.`
3141
+ ].join("\n"),
3142
+ summariesInContext: null,
3143
+ tools: null,
3144
+ philosophy: null,
3145
+ whenToCompress: null,
3146
+ whenNotToCompress: null,
3147
+ howToCompress: null,
3148
+ multiTierIntro: null,
3149
+ tier2: null,
3150
+ tier3: null,
3151
+ decompressPhilosophy: null,
3152
+ contextBreakdown: null,
3153
+ throttleRetry: null
3154
+ },
3155
+ toolExtras: {
3156
+ compress: { promptSnippet: "", promptGuidelines: [] },
3157
+ decompress: { promptSnippet: "", promptGuidelines: [] },
3158
+ search_context: { promptSnippet: "", promptGuidelines: [] },
3159
+ acp_status: { promptSnippet: "", promptGuidelines: [] }
3160
+ }
3161
+ }
3162
+ }
3163
+ }
3164
+ };
3165
+ var BUILTIN_REGISTRY = {
3166
+ default: defaultPack,
3167
+ lean: leanPack
3168
+ };
3169
+ var builtinSource = {
3170
+ id: "builtin",
3171
+ resolve(name) {
3172
+ return BUILTIN_REGISTRY[name] ?? null;
3173
+ },
3174
+ list() {
3175
+ return Object.values(BUILTIN_REGISTRY);
3176
+ }
3177
+ };
3178
+ function readPackFile(file) {
3179
+ try {
3180
+ const parsed = JSON.parse(readFileSync(file, "utf8"));
3181
+ return parsed && typeof parsed === "object" && !Array.isArray(parsed) ? parsed : null;
3182
+ } catch {
3183
+ return null;
3184
+ }
3185
+ }
3186
+ function createDirPackSource(id, dir) {
3187
+ return {
3188
+ id,
3189
+ resolve(name) {
3190
+ if (!isValidPackName(name)) return null;
3191
+ const file = path.join(dir, `${name}.json`);
3192
+ const raw = readPackFile(file);
3193
+ if (!raw) return null;
3194
+ return {
3195
+ name: typeof raw.name === "string" ? raw.name : name,
3196
+ version: typeof raw.version === "string" ? raw.version : void 0,
3197
+ description: typeof raw.description === "string" ? raw.description : void 0,
3198
+ surface: sanitizePackSurface(raw),
3199
+ source: `file:${file}`
3200
+ };
3201
+ },
3202
+ list() {
3203
+ let names;
3204
+ try {
3205
+ names = readdirSync(dir).filter((f) => f.endsWith(".json"));
3206
+ } catch {
3207
+ return [];
3208
+ }
3209
+ const out = [];
3210
+ for (const f of names) {
3211
+ const name = f.slice(0, -5);
3212
+ const pack = this.resolve(name);
3213
+ if (pack) out.push(pack);
3214
+ }
3215
+ return out;
3216
+ }
3217
+ };
3218
+ }
3219
+ function createPackResolver(sources) {
3220
+ return {
3221
+ sources,
3222
+ resolve(name) {
3223
+ if (!isValidPackName(name)) return null;
3224
+ for (const source of sources) {
3225
+ const pack = source.resolve(name);
3226
+ if (pack) return pack;
3227
+ }
3228
+ return null;
3229
+ },
3230
+ listPacks() {
3231
+ const seen = /* @__PURE__ */ new Set();
3232
+ const out = [];
3233
+ for (const source of sources) {
3234
+ for (const pack of source.list?.() ?? []) {
3235
+ if (!seen.has(pack.name)) {
3236
+ seen.add(pack.name);
3237
+ out.push(pack);
3238
+ }
3239
+ }
3240
+ }
3241
+ return out;
3242
+ }
3243
+ };
3244
+ }
3245
+ function defaultPackSources(opts) {
3246
+ const sources = [createDirPackSource("project", opts.projectDir)];
3247
+ for (const dir of opts.userDirs ?? []) sources.push(createDirPackSource("user", dir));
3248
+ sources.push(builtinSource);
3249
+ return sources;
3250
+ }
3251
+
3034
3252
  // src/decompress.ts
3035
3253
  function parseBlockIdArg(arg) {
3036
3254
  const normalized = arg.trim().toLowerCase();
@@ -4339,6 +4557,7 @@ export {
4339
4557
  buildRecap,
4340
4558
  buildRestoredContentPreview,
4341
4559
  buildStatusReport,
4560
+ builtinSource,
4342
4561
  clearDocFeatures,
4343
4562
  clearMessageFilters,
4344
4563
  cloneWithDescriptions,
@@ -4347,11 +4566,15 @@ export {
4347
4566
  coveredMessageIds,
4348
4567
  createBpeTokenizer,
4349
4568
  createCore,
4569
+ createDirPackSource,
4350
4570
  createInitialState,
4571
+ createPackResolver,
4351
4572
  createRenderRefsNode,
4352
4573
  deactivateBlock,
4353
4574
  defaultConfig,
4354
4575
  defaultCountTokens,
4576
+ defaultPack,
4577
+ defaultPackSources,
4355
4578
  defaultPrompts,
4356
4579
  docCacheInfo,
4357
4580
  docFeatures,
@@ -4372,6 +4595,8 @@ export {
4372
4595
  isMessageProtected,
4373
4596
  isRenderedSummaryMessage,
4374
4597
  isSummaryMessageId,
4598
+ isValidPackName,
4599
+ leanPack,
4375
4600
  listMessageFilters,
4376
4601
  listSearchAlgorithms,
4377
4602
  makeIO,
@@ -4401,6 +4626,7 @@ export {
4401
4626
  resolvePrompts,
4402
4627
  resolveTransformChannel,
4403
4628
  runPipeline,
4629
+ sanitizePackSurface,
4404
4630
  searchBlocks,
4405
4631
  searchBlocksAsync,
4406
4632
  setDocCacheCap,