@ashx-j/lunr 0.1.7 → 0.2.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 (108) hide show
  1. package/dist/builtin-extensions/lunr-todos.d.ts +7 -6
  2. package/dist/builtin-extensions/lunr-todos.d.ts.map +1 -1
  3. package/dist/builtin-extensions/lunr-todos.js +24 -11
  4. package/dist/builtin-extensions/lunr-todos.js.map +1 -1
  5. package/dist/builtin-extensions/narumiruna-pi-goal/src/commands.d.ts.map +1 -1
  6. package/dist/builtin-extensions/narumiruna-pi-goal/src/commands.js +9 -5
  7. package/dist/builtin-extensions/narumiruna-pi-goal/src/commands.js.map +1 -1
  8. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.d.ts.map +1 -1
  9. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.js +31 -3
  10. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.js.map +1 -1
  11. package/dist/builtin-extensions/narumiruna-pi-goal/src/runtime.d.ts +1 -0
  12. package/dist/builtin-extensions/narumiruna-pi-goal/src/runtime.d.ts.map +1 -1
  13. package/dist/builtin-extensions/narumiruna-pi-goal/src/runtime.js +14 -4
  14. package/dist/builtin-extensions/narumiruna-pi-goal/src/runtime.js.map +1 -1
  15. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
  16. package/dist/builtin-extensions/pi-subagents/src/extension/index.js +4 -3
  17. package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
  18. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.d.ts.map +1 -1
  19. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js +12 -1
  20. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js.map +1 -1
  21. package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts +3 -0
  22. package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts.map +1 -1
  23. package/dist/builtin-extensions/pi-subagents/src/shared/types.js.map +1 -1
  24. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +8 -0
  25. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
  26. package/dist/builtin-extensions/pi-subagents/src/tui/render.js +22 -2
  27. package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
  28. package/dist/builtin-extensions/pi-web-access/index.d.ts.map +1 -1
  29. package/dist/builtin-extensions/pi-web-access/index.js +38 -230
  30. package/dist/builtin-extensions/pi-web-access/index.js.map +1 -1
  31. package/dist/builtin-extensions/pi-web-access/render-search-chrome.d.ts +35 -0
  32. package/dist/builtin-extensions/pi-web-access/render-search-chrome.d.ts.map +1 -0
  33. package/dist/builtin-extensions/pi-web-access/render-search-chrome.js +93 -0
  34. package/dist/builtin-extensions/pi-web-access/render-search-chrome.js.map +1 -0
  35. package/dist/catalog/models.json +1 -1
  36. package/dist/catalog/providers/cloudflare-workers-ai.json +1 -1
  37. package/dist/catalog/providers/huggingface.json +1 -1
  38. package/dist/catalog/providers/opencode-go.json +1 -1
  39. package/dist/catalog/providers/openrouter.json +1 -1
  40. package/dist/catalog/providers/vercel-ai-gateway.json +1 -1
  41. package/dist/catalog/publication.json +3 -3
  42. package/dist/core/context-breakdown.d.ts +21 -1
  43. package/dist/core/context-breakdown.d.ts.map +1 -1
  44. package/dist/core/context-breakdown.js +58 -2
  45. package/dist/core/context-breakdown.js.map +1 -1
  46. package/dist/core/permission-mode-control.d.ts +27 -0
  47. package/dist/core/permission-mode-control.d.ts.map +1 -0
  48. package/dist/core/permission-mode-control.js +39 -0
  49. package/dist/core/permission-mode-control.js.map +1 -0
  50. package/dist/core/settings-manager.d.ts.map +1 -1
  51. package/dist/core/settings-manager.js.map +1 -1
  52. package/dist/core/slash-commands.d.ts.map +1 -1
  53. package/dist/core/slash-commands.js +0 -1
  54. package/dist/core/slash-commands.js.map +1 -1
  55. package/dist/core/tools/read.d.ts.map +1 -1
  56. package/dist/core/tools/read.js +14 -20
  57. package/dist/core/tools/read.js.map +1 -1
  58. package/dist/core/tools/render-utils.d.ts +2 -0
  59. package/dist/core/tools/render-utils.d.ts.map +1 -1
  60. package/dist/core/tools/render-utils.js +10 -0
  61. package/dist/core/tools/render-utils.js.map +1 -1
  62. package/dist/modes/interactive/components/assistant-message.d.ts +1 -0
  63. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  64. package/dist/modes/interactive/components/assistant-message.js +1 -0
  65. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  66. package/dist/modes/interactive/components/context-view.d.ts.map +1 -1
  67. package/dist/modes/interactive/components/context-view.js +3 -1
  68. package/dist/modes/interactive/components/context-view.js.map +1 -1
  69. package/dist/modes/interactive/components/plan-message.d.ts +17 -0
  70. package/dist/modes/interactive/components/plan-message.d.ts.map +1 -0
  71. package/dist/modes/interactive/components/plan-message.js +43 -0
  72. package/dist/modes/interactive/components/plan-message.js.map +1 -0
  73. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  74. package/dist/modes/interactive/components/settings-selector.js +1 -1
  75. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  76. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  77. package/dist/modes/interactive/components/tool-execution.js +3 -1
  78. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  79. package/dist/modes/interactive/components/usage-view.d.ts +4 -25
  80. package/dist/modes/interactive/components/usage-view.d.ts.map +1 -1
  81. package/dist/modes/interactive/components/usage-view.js +17 -69
  82. package/dist/modes/interactive/components/usage-view.js.map +1 -1
  83. package/dist/modes/interactive/components/user-message.d.ts +1 -0
  84. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  85. package/dist/modes/interactive/components/user-message.js +1 -0
  86. package/dist/modes/interactive/components/user-message.js.map +1 -1
  87. package/dist/modes/interactive/interactive-mode.d.ts +17 -6
  88. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  89. package/dist/modes/interactive/interactive-mode.js +196 -114
  90. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  91. package/dist/modes/interactive/smooth-streaming.d.ts +39 -6
  92. package/dist/modes/interactive/smooth-streaming.d.ts.map +1 -1
  93. package/dist/modes/interactive/smooth-streaming.js +160 -73
  94. package/dist/modes/interactive/smooth-streaming.js.map +1 -1
  95. package/dist/utils/clipboard-image.d.ts.map +1 -1
  96. package/dist/utils/clipboard-image.js +7 -3
  97. package/dist/utils/clipboard-image.js.map +1 -1
  98. package/docs/terminal-setup.md +13 -0
  99. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  100. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  101. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  102. package/examples/extensions/gondolin/package-lock.json +2 -2
  103. package/examples/extensions/gondolin/package.json +1 -1
  104. package/examples/extensions/sandbox/package-lock.json +2 -2
  105. package/examples/extensions/sandbox/package.json +1 -1
  106. package/examples/extensions/with-deps/package-lock.json +2 -2
  107. package/examples/extensions/with-deps/package.json +1 -1
  108. package/package.json +4 -4
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Pure collapsed/expanded chrome for web_search and fetch_content.
3
+ *
4
+ * lunr: compact tool chrome. Collapsed = header + status/count only.
5
+ * Expanded = the query/URL list. No summaries, source titles, body previews,
6
+ * or ctrl+o footers.
7
+ */
8
+ export declare function normalizeSearchQueryList(queryList: unknown[]): string[];
9
+ export declare function collectSearchQueries(args: {
10
+ query?: unknown;
11
+ queries?: unknown;
12
+ } | undefined): string[];
13
+ export declare function collectFetchUrls(args: {
14
+ url?: unknown;
15
+ urls?: unknown;
16
+ } | undefined): string[];
17
+ export declare function formatSearchCallTitle(queries: string[]): {
18
+ title: string;
19
+ empty: boolean;
20
+ };
21
+ export declare function formatFetchCallTitle(urls: string[]): {
22
+ title: string;
23
+ empty: boolean;
24
+ };
25
+ export declare function formatSearchStatusLine(details: any): string;
26
+ export declare function formatFetchStatusLine(details: any): string;
27
+ export declare function formatSearchChrome(options: any): {
28
+ call: string;
29
+ result: any;
30
+ };
31
+ export declare function formatFetchChrome(options: any): {
32
+ call: string;
33
+ result: any;
34
+ };
35
+ //# sourceMappingURL=render-search-chrome.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-search-chrome.d.ts","sourceRoot":"","sources":["../../../src/builtin-extensions/pi-web-access/render-search-chrome.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AAEH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,CAQvE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAQvG;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAS9F;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAU1F;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAStF;AAED,wBAAgB,sBAAsB,CAAC,OAAO,KAAA,UAY7C;AAED,wBAAgB,qBAAqB,CAAC,OAAO,KAAA,UAI5C;AAED,wBAAgB,kBAAkB,CAAC,OAAO,KAAA;;;EAMzC;AAED,wBAAgB,iBAAiB,CAAC,OAAO,KAAA;;;EAMxC","sourcesContent":["// @ts-nocheck\n/**\n * Pure collapsed/expanded chrome for web_search and fetch_content.\n *\n * lunr: compact tool chrome. Collapsed = header + status/count only.\n * Expanded = the query/URL list. No summaries, source titles, body previews,\n * or ctrl+o footers.\n */\n\nexport function normalizeSearchQueryList(queryList: unknown[]): string[] {\n\tconst normalized: string[] = [];\n\tfor (const query of queryList) {\n\t\tif (typeof query !== \"string\") continue;\n\t\tconst trimmed = query.trim();\n\t\tif (trimmed.length > 0) normalized.push(trimmed);\n\t}\n\treturn normalized;\n}\n\nexport function collectSearchQueries(args: { query?: unknown; queries?: unknown } | undefined): string[] {\n\tconst input = args ?? {};\n\tconst rawQueryList: unknown[] = Array.isArray(input.queries)\n\t\t? input.queries\n\t\t: input.query !== undefined\n\t\t\t? [input.query]\n\t\t\t: [];\n\treturn normalizeSearchQueryList(rawQueryList);\n}\n\nexport function collectFetchUrls(args: { url?: unknown; urls?: unknown } | undefined): string[] {\n\tconst input = args ?? {};\n\tif (Array.isArray(input.urls)) {\n\t\treturn input.urls.filter((url) => typeof url === \"string\" && url.length > 0);\n\t}\n\tif (typeof input.url === \"string\" && input.url.length > 0) {\n\t\treturn [input.url];\n\t}\n\treturn [];\n}\n\nexport function formatSearchCallTitle(queries: string[]): { title: string; empty: boolean } {\n\tif (queries.length === 0) {\n\t\treturn { title: \"search (no query)\", empty: true };\n\t}\n\tif (queries.length === 1) {\n\t\tconst q = queries[0];\n\t\tconst display = q.length > 60 ? `${q.slice(0, 57)}...` : q;\n\t\treturn { title: `search \"${display}\"`, empty: false };\n\t}\n\treturn { title: `search ${queries.length} queries`, empty: false };\n}\n\nexport function formatFetchCallTitle(urls: string[]): { title: string; empty: boolean } {\n\tif (urls.length === 0) {\n\t\treturn { title: \"fetch (no URL)\", empty: true };\n\t}\n\tif (urls.length === 1) {\n\t\tconst display = urls[0].length > 60 ? `${urls[0].slice(0, 57)}...` : urls[0];\n\t\treturn { title: `fetch ${display}`, empty: false };\n\t}\n\treturn { title: `fetch ${urls.length} URLs`, empty: false };\n}\n\nexport function formatSearchStatusLine(details) {\n\tconst queryInfo = details?.queryCount === 1 ? \"\" : `${details?.successfulQueries}/${details?.queryCount} queries, `;\n\tlet statusLine = `${queryInfo}${details?.totalResults ?? 0} sources`;\n\tif (details?.curated && details?.curatedFrom) {\n\t\tstatusLine += ` (${details.queryCount}/${details.curatedFrom} queries curated)`;\n\t}\n\tif (details?.fetchId && details?.fetchUrls) {\n\t\tstatusLine += ` (fetching ${details.fetchUrls.length} URLs)`;\n\t} else if (details?.fetchId) {\n\t\tstatusLine += \" (content ready)\";\n\t}\n\treturn statusLine;\n}\n\nexport function formatFetchStatusLine(details) {\n\tconst urlCount = details?.urlCount ?? 0;\n\tconst successful = details?.successful ?? (urlCount === 1 ? 1 : 0);\n\treturn `${successful}/${urlCount} URLs`;\n}\n\nexport function formatSearchChrome(options) {\n\tconst call = formatSearchCallTitle(options.queries);\n\tif (options.expanded) {\n\t\treturn { call: call.title, result: options.queries.slice() };\n\t}\n\treturn { call: call.title, result: [formatSearchStatusLine(options.details)] };\n}\n\nexport function formatFetchChrome(options) {\n\tconst call = formatFetchCallTitle(options.urls);\n\tif (options.expanded) {\n\t\treturn { call: call.title, result: options.urls.slice() };\n\t}\n\treturn { call: call.title, result: [formatFetchStatusLine(options.details)] };\n}\n"]}
@@ -0,0 +1,93 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * Pure collapsed/expanded chrome for web_search and fetch_content.
4
+ *
5
+ * lunr: compact tool chrome. Collapsed = header + status/count only.
6
+ * Expanded = the query/URL list. No summaries, source titles, body previews,
7
+ * or ctrl+o footers.
8
+ */
9
+ export function normalizeSearchQueryList(queryList) {
10
+ const normalized = [];
11
+ for (const query of queryList) {
12
+ if (typeof query !== "string")
13
+ continue;
14
+ const trimmed = query.trim();
15
+ if (trimmed.length > 0)
16
+ normalized.push(trimmed);
17
+ }
18
+ return normalized;
19
+ }
20
+ export function collectSearchQueries(args) {
21
+ const input = args ?? {};
22
+ const rawQueryList = Array.isArray(input.queries)
23
+ ? input.queries
24
+ : input.query !== undefined
25
+ ? [input.query]
26
+ : [];
27
+ return normalizeSearchQueryList(rawQueryList);
28
+ }
29
+ export function collectFetchUrls(args) {
30
+ const input = args ?? {};
31
+ if (Array.isArray(input.urls)) {
32
+ return input.urls.filter((url) => typeof url === "string" && url.length > 0);
33
+ }
34
+ if (typeof input.url === "string" && input.url.length > 0) {
35
+ return [input.url];
36
+ }
37
+ return [];
38
+ }
39
+ export function formatSearchCallTitle(queries) {
40
+ if (queries.length === 0) {
41
+ return { title: "search (no query)", empty: true };
42
+ }
43
+ if (queries.length === 1) {
44
+ const q = queries[0];
45
+ const display = q.length > 60 ? `${q.slice(0, 57)}...` : q;
46
+ return { title: `search "${display}"`, empty: false };
47
+ }
48
+ return { title: `search ${queries.length} queries`, empty: false };
49
+ }
50
+ export function formatFetchCallTitle(urls) {
51
+ if (urls.length === 0) {
52
+ return { title: "fetch (no URL)", empty: true };
53
+ }
54
+ if (urls.length === 1) {
55
+ const display = urls[0].length > 60 ? `${urls[0].slice(0, 57)}...` : urls[0];
56
+ return { title: `fetch ${display}`, empty: false };
57
+ }
58
+ return { title: `fetch ${urls.length} URLs`, empty: false };
59
+ }
60
+ export function formatSearchStatusLine(details) {
61
+ const queryInfo = details?.queryCount === 1 ? "" : `${details?.successfulQueries}/${details?.queryCount} queries, `;
62
+ let statusLine = `${queryInfo}${details?.totalResults ?? 0} sources`;
63
+ if (details?.curated && details?.curatedFrom) {
64
+ statusLine += ` (${details.queryCount}/${details.curatedFrom} queries curated)`;
65
+ }
66
+ if (details?.fetchId && details?.fetchUrls) {
67
+ statusLine += ` (fetching ${details.fetchUrls.length} URLs)`;
68
+ }
69
+ else if (details?.fetchId) {
70
+ statusLine += " (content ready)";
71
+ }
72
+ return statusLine;
73
+ }
74
+ export function formatFetchStatusLine(details) {
75
+ const urlCount = details?.urlCount ?? 0;
76
+ const successful = details?.successful ?? (urlCount === 1 ? 1 : 0);
77
+ return `${successful}/${urlCount} URLs`;
78
+ }
79
+ export function formatSearchChrome(options) {
80
+ const call = formatSearchCallTitle(options.queries);
81
+ if (options.expanded) {
82
+ return { call: call.title, result: options.queries.slice() };
83
+ }
84
+ return { call: call.title, result: [formatSearchStatusLine(options.details)] };
85
+ }
86
+ export function formatFetchChrome(options) {
87
+ const call = formatFetchCallTitle(options.urls);
88
+ if (options.expanded) {
89
+ return { call: call.title, result: options.urls.slice() };
90
+ }
91
+ return { call: call.title, result: [formatFetchStatusLine(options.details)] };
92
+ }
93
+ //# sourceMappingURL=render-search-chrome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-search-chrome.js","sourceRoot":"","sources":["../../../src/builtin-extensions/pi-web-access/render-search-chrome.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\n/**\n * Pure collapsed/expanded chrome for web_search and fetch_content.\n *\n * lunr: compact tool chrome. Collapsed = header + status/count only.\n * Expanded = the query/URL list. No summaries, source titles, body previews,\n * or ctrl+o footers.\n */\n\nexport function normalizeSearchQueryList(queryList: unknown[]): string[] {\n\tconst normalized: string[] = [];\n\tfor (const query of queryList) {\n\t\tif (typeof query !== \"string\") continue;\n\t\tconst trimmed = query.trim();\n\t\tif (trimmed.length > 0) normalized.push(trimmed);\n\t}\n\treturn normalized;\n}\n\nexport function collectSearchQueries(args: { query?: unknown; queries?: unknown } | undefined): string[] {\n\tconst input = args ?? {};\n\tconst rawQueryList: unknown[] = Array.isArray(input.queries)\n\t\t? input.queries\n\t\t: input.query !== undefined\n\t\t\t? [input.query]\n\t\t\t: [];\n\treturn normalizeSearchQueryList(rawQueryList);\n}\n\nexport function collectFetchUrls(args: { url?: unknown; urls?: unknown } | undefined): string[] {\n\tconst input = args ?? {};\n\tif (Array.isArray(input.urls)) {\n\t\treturn input.urls.filter((url) => typeof url === \"string\" && url.length > 0);\n\t}\n\tif (typeof input.url === \"string\" && input.url.length > 0) {\n\t\treturn [input.url];\n\t}\n\treturn [];\n}\n\nexport function formatSearchCallTitle(queries: string[]): { title: string; empty: boolean } {\n\tif (queries.length === 0) {\n\t\treturn { title: \"search (no query)\", empty: true };\n\t}\n\tif (queries.length === 1) {\n\t\tconst q = queries[0];\n\t\tconst display = q.length > 60 ? `${q.slice(0, 57)}...` : q;\n\t\treturn { title: `search \"${display}\"`, empty: false };\n\t}\n\treturn { title: `search ${queries.length} queries`, empty: false };\n}\n\nexport function formatFetchCallTitle(urls: string[]): { title: string; empty: boolean } {\n\tif (urls.length === 0) {\n\t\treturn { title: \"fetch (no URL)\", empty: true };\n\t}\n\tif (urls.length === 1) {\n\t\tconst display = urls[0].length > 60 ? `${urls[0].slice(0, 57)}...` : urls[0];\n\t\treturn { title: `fetch ${display}`, empty: false };\n\t}\n\treturn { title: `fetch ${urls.length} URLs`, empty: false };\n}\n\nexport function formatSearchStatusLine(details) {\n\tconst queryInfo = details?.queryCount === 1 ? \"\" : `${details?.successfulQueries}/${details?.queryCount} queries, `;\n\tlet statusLine = `${queryInfo}${details?.totalResults ?? 0} sources`;\n\tif (details?.curated && details?.curatedFrom) {\n\t\tstatusLine += ` (${details.queryCount}/${details.curatedFrom} queries curated)`;\n\t}\n\tif (details?.fetchId && details?.fetchUrls) {\n\t\tstatusLine += ` (fetching ${details.fetchUrls.length} URLs)`;\n\t} else if (details?.fetchId) {\n\t\tstatusLine += \" (content ready)\";\n\t}\n\treturn statusLine;\n}\n\nexport function formatFetchStatusLine(details) {\n\tconst urlCount = details?.urlCount ?? 0;\n\tconst successful = details?.successful ?? (urlCount === 1 ? 1 : 0);\n\treturn `${successful}/${urlCount} URLs`;\n}\n\nexport function formatSearchChrome(options) {\n\tconst call = formatSearchCallTitle(options.queries);\n\tif (options.expanded) {\n\t\treturn { call: call.title, result: options.queries.slice() };\n\t}\n\treturn { call: call.title, result: [formatSearchStatusLine(options.details)] };\n}\n\nexport function formatFetchChrome(options) {\n\tconst call = formatFetchCallTitle(options.urls);\n\tif (options.expanded) {\n\t\treturn { call: call.title, result: options.urls.slice() };\n\t}\n\treturn { call: call.title, result: [formatFetchStatusLine(options.details)] };\n}\n"]}