@diegopetrucci/pi-extensions 0.1.61 → 0.1.63

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 (72) hide show
  1. package/.pi-fleet-tested-version +1 -1
  2. package/README.md +3 -2
  3. package/extensions/agent-workflow-audit/.pi-fleet-tested-version +1 -1
  4. package/extensions/agent-workflow-audit/package.json +1 -1
  5. package/extensions/annotate-git-diff/.pi-fleet-tested-version +1 -1
  6. package/extensions/annotate-git-diff/package.json +1 -1
  7. package/extensions/annotate-last-message/.pi-fleet-tested-version +1 -1
  8. package/extensions/annotate-last-message/package.json +1 -1
  9. package/extensions/brrr/.pi-fleet-tested-version +1 -1
  10. package/extensions/brrr/package.json +1 -1
  11. package/extensions/claude-fast/.pi-fleet-tested-version +1 -1
  12. package/extensions/claude-fast/README.md +2 -0
  13. package/extensions/claude-fast/package.json +1 -1
  14. package/extensions/code-reviewer/.pi-fleet-tested-version +1 -1
  15. package/extensions/code-reviewer/README.md +1 -0
  16. package/extensions/code-reviewer/index.ts +24 -2
  17. package/extensions/code-reviewer/package.json +1 -1
  18. package/extensions/confirm-destructive/.pi-fleet-tested-version +1 -1
  19. package/extensions/confirm-destructive/package.json +1 -1
  20. package/extensions/context-cap/.pi-fleet-tested-version +1 -1
  21. package/extensions/context-cap/package.json +1 -1
  22. package/extensions/context-inspector/.pi-fleet-tested-version +1 -1
  23. package/extensions/context-inspector/package.json +1 -1
  24. package/extensions/contrarian/.pi-fleet-tested-version +1 -1
  25. package/extensions/contrarian/README.md +2 -0
  26. package/extensions/contrarian/index.ts +34 -8
  27. package/extensions/contrarian/package.json +1 -1
  28. package/extensions/dirty-repo-guard/.pi-fleet-tested-version +1 -1
  29. package/extensions/dirty-repo-guard/package.json +1 -1
  30. package/extensions/dynamic-context-pruning/.pi-fleet-tested-version +1 -1
  31. package/extensions/dynamic-context-pruning/README.md +78 -11
  32. package/extensions/dynamic-context-pruning/index.ts +171 -21
  33. package/extensions/dynamic-context-pruning/package.json +1 -1
  34. package/extensions/fast/.pi-fleet-tested-version +1 -0
  35. package/extensions/fast/README.md +119 -0
  36. package/extensions/fast/fast.example.json +4 -0
  37. package/extensions/fast/index.ts +383 -0
  38. package/extensions/fast/package.json +39 -0
  39. package/extensions/git-footer/.pi-fleet-tested-version +1 -1
  40. package/extensions/git-footer/package.json +1 -1
  41. package/extensions/gnosis/.pi-fleet-tested-version +1 -1
  42. package/extensions/gnosis/package.json +1 -1
  43. package/extensions/illustrations-to-explain-things/.pi-fleet-tested-version +1 -1
  44. package/extensions/illustrations-to-explain-things/package.json +1 -1
  45. package/extensions/inline-bash/.pi-fleet-tested-version +1 -1
  46. package/extensions/inline-bash/package.json +1 -1
  47. package/extensions/librarian/.pi-fleet-tested-version +1 -1
  48. package/extensions/librarian/README.md +1 -1
  49. package/extensions/librarian/index.ts +34 -5
  50. package/extensions/librarian/package.json +1 -1
  51. package/extensions/minimal-footer/.pi-fleet-tested-version +1 -1
  52. package/extensions/minimal-footer/package.json +1 -1
  53. package/extensions/notify/.pi-fleet-tested-version +1 -1
  54. package/extensions/notify/package.json +1 -1
  55. package/extensions/openai-fast/.pi-fleet-tested-version +1 -1
  56. package/extensions/openai-fast/README.md +2 -0
  57. package/extensions/openai-fast/package.json +1 -1
  58. package/extensions/oracle/.pi-fleet-tested-version +1 -1
  59. package/extensions/oracle/README.md +2 -0
  60. package/extensions/oracle/index.ts +34 -8
  61. package/extensions/oracle/package.json +1 -1
  62. package/extensions/permission-gate/.pi-fleet-tested-version +1 -1
  63. package/extensions/permission-gate/package.json +1 -1
  64. package/extensions/quiet-tools/.pi-fleet-tested-version +1 -1
  65. package/extensions/quiet-tools/package.json +1 -1
  66. package/extensions/review/.pi-fleet-tested-version +1 -1
  67. package/extensions/review/package.json +1 -1
  68. package/extensions/todo/.pi-fleet-tested-version +1 -1
  69. package/extensions/todo/package.json +1 -1
  70. package/extensions/triage-comments/.pi-fleet-tested-version +1 -1
  71. package/extensions/triage-comments/package.json +1 -1
  72. package/package.json +5 -6
@@ -20,6 +20,31 @@ type PiModel = {
20
20
  thinkingLevelMap?: ThinkingLevelMap;
21
21
  };
22
22
 
23
+ type ModelSelectionContext = {
24
+ model?: PiModel;
25
+ modelRegistry: { getAvailable(): PiModel[] | Promise<PiModel[]> };
26
+ scopedModels?: ReadonlyArray<{ model: PiModel; thinkingLevel?: ThinkingLevel }>;
27
+ };
28
+
29
+ function modelKey(model: PiModel): string {
30
+ return `${model.provider}/${model.id}`.toLowerCase();
31
+ }
32
+
33
+ function hasModelScope(ctx: ModelSelectionContext): boolean {
34
+ return Array.isArray(ctx.scopedModels) && ctx.scopedModels.length > 0;
35
+ }
36
+
37
+ function isModelInScope(ctx: ModelSelectionContext, model: PiModel): boolean {
38
+ if (!hasModelScope(ctx)) return true;
39
+ const key = modelKey(model);
40
+ return ctx.scopedModels!.some((entry) => modelKey(entry.model) === key);
41
+ }
42
+
43
+ async function getAutoSelectableModels(ctx: ModelSelectionContext): Promise<PiModel[]> {
44
+ const available = await ctx.modelRegistry.getAvailable();
45
+ return hasModelScope(ctx) ? available.filter((model) => isModelInScope(ctx, model)) : available;
46
+ }
47
+
23
48
  interface UsageStats {
24
49
  input: number;
25
50
  output: number;
@@ -163,8 +188,6 @@ const PROVIDER_MODEL_PREFERENCES: Record<string, string[]> = {
163
188
  "accounts/fireworks/models/glm-5p2",
164
189
  "accounts/fireworks/routers/glm-5p2-fast",
165
190
  "accounts/fireworks/models/minimax-m3",
166
- "accounts/fireworks/models/glm-5p1",
167
- "accounts/fireworks/routers/glm-5p1-fast",
168
191
  "accounts/fireworks/models/kimi-k2p6",
169
192
  "accounts/fireworks/routers/kimi-k2p6-turbo",
170
193
  "accounts/fireworks/routers/kimi-k2p6-fast",
@@ -873,7 +896,7 @@ function appendThinkingLevelClampReason(
873
896
  }
874
897
 
875
898
  async function findAvailableModel(
876
- ctx: { model?: PiModel; modelRegistry: { getAvailable(): PiModel[] | Promise<PiModel[]> } },
899
+ ctx: ModelSelectionContext,
877
900
  modelRef: string,
878
901
  ): Promise<PiModel | undefined> {
879
902
  const available = await ctx.modelRegistry.getAvailable();
@@ -919,11 +942,11 @@ function toOracleSelection(
919
942
  }
920
943
 
921
944
  function buildSessionFallbackSelection(
922
- ctx: { model?: PiModel },
945
+ ctx: ModelSelectionContext,
923
946
  thinkingLevelOverride: ThinkingLevel | undefined,
924
947
  ): OracleSelection | undefined {
925
948
  const model = ctx.model;
926
- if (!model) return undefined;
949
+ if (!model || !isModelInScope(ctx, model)) return undefined;
927
950
  return toOracleSelection(
928
951
  model,
929
952
  thinkingLevelOverride,
@@ -939,14 +962,16 @@ function withFallbackReason(selection: OracleSelection, previous: OracleSelectio
939
962
  }
940
963
 
941
964
  async function selectOracleModel(
942
- ctx: { model?: PiModel; modelRegistry: { getAvailable(): PiModel[] | Promise<PiModel[]> } },
965
+ ctx: ModelSelectionContext,
943
966
  thinkingLevelOverride?: ThinkingLevel,
944
967
  ): Promise<{ ok: true; selection: OracleSelection; ordered: OracleSelection[] } | { ok: false; error: string }> {
945
- const available = await ctx.modelRegistry.getAvailable();
968
+ const available = await getAutoSelectableModels(ctx);
946
969
  if (available.length === 0) {
947
970
  return {
948
971
  ok: false,
949
- error: "No authenticated models are available. Log in or configure an API key first.",
972
+ error: hasModelScope(ctx)
973
+ ? "No authenticated models are available in the current session model scope. Adjust the scope, log in, or configure an API key."
974
+ : "No authenticated models are available. Log in or configure an API key first.",
950
975
  };
951
976
  }
952
977
 
@@ -1253,6 +1278,7 @@ type OracleExtensionDeps = {
1253
1278
  };
1254
1279
 
1255
1280
  export const __test__ = {
1281
+ buildSessionFallbackSelection,
1256
1282
  createOracleExtension,
1257
1283
  findAvailableModel,
1258
1284
  isModelAvailabilityError,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diegopetrucci/pi-oracle",
3
- "version": "0.1.23",
3
+ "version": "0.1.24",
4
4
  "description": "An Amp-style oracle extension for pi that consults the strongest reasoning model on your current provider.",
5
5
  "keywords": [
6
6
  "pi-package",
@@ -1 +1 @@
1
- 0.82.1
1
+ 0.83.0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diegopetrucci/pi-permission-gate",
3
- "version": "0.1.11",
3
+ "version": "0.1.12",
4
4
  "description": "A pi extension that prompts before dangerous bash commands and protected file writes.",
5
5
  "keywords": [
6
6
  "pi-package",
@@ -1 +1 @@
1
- 0.82.1
1
+ 0.83.0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diegopetrucci/pi-quiet-tools",
3
- "version": "0.1.9",
3
+ "version": "0.1.10",
4
4
  "description": "A pi extension that visually compacts collapsed built-in tool rows in the TUI without changing tool results sent to the model.",
5
5
  "keywords": [
6
6
  "pi-package",
@@ -1 +1 @@
1
- 0.82.1
1
+ 0.83.0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diegopetrucci/pi-review",
3
- "version": "0.1.11",
3
+ "version": "0.1.12",
4
4
  "description": "A standalone pi extension that adds /review and /end-review commands adapted from mitsuhiko/agent-stuff.",
5
5
  "keywords": [
6
6
  "pi-package",
@@ -1 +1 @@
1
- 0.82.1
1
+ 0.83.0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diegopetrucci/pi-todo",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "description": "A pi extension that adds a branch-aware todo tool and /todos viewer.",
5
5
  "keywords": [
6
6
  "pi-package",
@@ -1 +1 @@
1
- 0.82.1
1
+ 0.83.0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diegopetrucci/pi-triage-comments",
3
- "version": "0.1.9",
3
+ "version": "0.1.10",
4
4
  "description": "A pi extension that adds /triage-comments and a read-only triage_comments subagent tool for review-comment triage.",
5
5
  "keywords": [
6
6
  "pi-package",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diegopetrucci/pi-extensions",
3
- "version": "0.1.61",
3
+ "version": "0.1.63",
4
4
  "description": "A collection of pi extensions and skills for annotation UIs, context management, workflow audits, contrarian review, review-comment triage, notifications, brrr push alerts, safety guards, GitHub research, repo-local knowledge, todos, tool rendering, model/provider helpers, and Xiaohei-style article illustrations.",
5
5
  "keywords": [
6
6
  "pi-package",
@@ -45,7 +45,6 @@
45
45
  "./extensions/annotate-git-diff/index.ts",
46
46
  "./extensions/annotate-last-message/index.ts",
47
47
  "./extensions/brrr/index.ts",
48
- "./extensions/claude-fast/index.ts",
49
48
  "./extensions/code-reviewer/index.ts",
50
49
  "./extensions/confirm-destructive/index.ts",
51
50
  "./extensions/context-cap/index.ts",
@@ -53,12 +52,12 @@
53
52
  "./extensions/contrarian/index.ts",
54
53
  "./extensions/dirty-repo-guard/index.ts",
55
54
  "./extensions/dynamic-context-pruning/index.ts",
55
+ "./extensions/fast/index.ts",
56
56
  "./extensions/gnosis/index.ts",
57
57
  "./extensions/inline-bash/index.ts",
58
58
  "./extensions/librarian/index.ts",
59
59
  "./extensions/minimal-footer/index.ts",
60
60
  "./extensions/notify/index.ts",
61
- "./extensions/openai-fast/index.ts",
62
61
  "./extensions/oracle/index.ts",
63
62
  "./extensions/permission-gate/index.ts",
64
63
  "./extensions/quiet-tools/index.ts",
@@ -72,9 +71,9 @@
72
71
  ]
73
72
  },
74
73
  "devDependencies": {
75
- "@earendil-works/pi-ai": "^0.82.1",
76
- "@earendil-works/pi-coding-agent": "^0.82.1",
77
- "@earendil-works/pi-tui": "^0.82.1",
74
+ "@earendil-works/pi-ai": "^0.83.0",
75
+ "@earendil-works/pi-coding-agent": "^0.83.0",
76
+ "@earendil-works/pi-tui": "^0.83.0",
78
77
  "@types/node": "^25.9.1",
79
78
  "husky": "^9.1.7",
80
79
  "typebox": "^1.3.6",