@radkode/neo 1.1.1 → 1.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 (95) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +46 -8
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/agent/context/index.d.ts.map +1 -1
  5. package/dist/commands/agent/context/index.js +72 -21
  6. package/dist/commands/agent/context/index.js.map +1 -1
  7. package/dist/commands/agent/index.d.ts.map +1 -1
  8. package/dist/commands/agent/index.js +7 -1
  9. package/dist/commands/agent/index.js.map +1 -1
  10. package/dist/commands/alias/setup/index.d.ts.map +1 -1
  11. package/dist/commands/alias/setup/index.js +55 -41
  12. package/dist/commands/alias/setup/index.js.map +1 -1
  13. package/dist/commands/completions/index.d.ts +3 -0
  14. package/dist/commands/completions/index.d.ts.map +1 -0
  15. package/dist/commands/completions/index.js +84 -0
  16. package/dist/commands/completions/index.js.map +1 -0
  17. package/dist/commands/gh/pr/create/index.d.ts.map +1 -1
  18. package/dist/commands/gh/pr/create/index.js +84 -44
  19. package/dist/commands/gh/pr/create/index.js.map +1 -1
  20. package/dist/commands/git/branch/index.d.ts.map +1 -1
  21. package/dist/commands/git/branch/index.js +55 -31
  22. package/dist/commands/git/branch/index.js.map +1 -1
  23. package/dist/commands/git/commit/index.d.ts.map +1 -1
  24. package/dist/commands/git/commit/index.js +65 -33
  25. package/dist/commands/git/commit/index.js.map +1 -1
  26. package/dist/commands/git/pull/index.d.ts +7 -1
  27. package/dist/commands/git/pull/index.d.ts.map +1 -1
  28. package/dist/commands/git/pull/index.js +85 -57
  29. package/dist/commands/git/pull/index.js.map +1 -1
  30. package/dist/commands/git/push/index.d.ts +2 -0
  31. package/dist/commands/git/push/index.d.ts.map +1 -1
  32. package/dist/commands/git/push/index.js +61 -38
  33. package/dist/commands/git/push/index.js.map +1 -1
  34. package/dist/commands/git/stash/index.d.ts.map +1 -1
  35. package/dist/commands/git/stash/index.js +42 -10
  36. package/dist/commands/git/stash/index.js.map +1 -1
  37. package/dist/commands/git/worktree/add.d.ts.map +1 -1
  38. package/dist/commands/git/worktree/add.js +4 -3
  39. package/dist/commands/git/worktree/add.js.map +1 -1
  40. package/dist/commands/git/worktree/remove.d.ts.map +1 -1
  41. package/dist/commands/git/worktree/remove.js +17 -7
  42. package/dist/commands/git/worktree/remove.js.map +1 -1
  43. package/dist/commands/git/worktree/switch.d.ts.map +1 -1
  44. package/dist/commands/git/worktree/switch.js +23 -8
  45. package/dist/commands/git/worktree/switch.js.map +1 -1
  46. package/dist/commands/index.d.ts +2 -0
  47. package/dist/commands/index.d.ts.map +1 -1
  48. package/dist/commands/index.js +6 -0
  49. package/dist/commands/index.js.map +1 -1
  50. package/dist/commands/init/index.d.ts.map +1 -1
  51. package/dist/commands/init/index.js +50 -16
  52. package/dist/commands/init/index.js.map +1 -1
  53. package/dist/commands/schema/index.d.ts +44 -0
  54. package/dist/commands/schema/index.d.ts.map +1 -0
  55. package/dist/commands/schema/index.js +120 -0
  56. package/dist/commands/schema/index.js.map +1 -0
  57. package/dist/commands/update/index.d.ts.map +1 -1
  58. package/dist/commands/update/index.js +107 -81
  59. package/dist/commands/update/index.js.map +1 -1
  60. package/dist/types/schemas.d.ts +2 -2
  61. package/dist/utils/completions.d.ts +40 -2
  62. package/dist/utils/completions.d.ts.map +1 -1
  63. package/dist/utils/completions.js +439 -84
  64. package/dist/utils/completions.js.map +1 -1
  65. package/dist/utils/logger.d.ts +1 -0
  66. package/dist/utils/logger.d.ts.map +1 -1
  67. package/dist/utils/logger.js +52 -11
  68. package/dist/utils/logger.js.map +1 -1
  69. package/dist/utils/output.d.ts +15 -0
  70. package/dist/utils/output.d.ts.map +1 -0
  71. package/dist/utils/output.js +50 -0
  72. package/dist/utils/output.js.map +1 -0
  73. package/dist/utils/prompt.d.ts +17 -2
  74. package/dist/utils/prompt.d.ts.map +1 -1
  75. package/dist/utils/prompt.js +66 -11
  76. package/dist/utils/prompt.js.map +1 -1
  77. package/dist/utils/run-action.d.ts +3 -0
  78. package/dist/utils/run-action.d.ts.map +1 -0
  79. package/dist/utils/run-action.js +19 -0
  80. package/dist/utils/run-action.js.map +1 -0
  81. package/dist/utils/runtime-context.d.ts +27 -0
  82. package/dist/utils/runtime-context.d.ts.map +1 -0
  83. package/dist/utils/runtime-context.js +74 -0
  84. package/dist/utils/runtime-context.js.map +1 -0
  85. package/dist/utils/shell.d.ts +30 -0
  86. package/dist/utils/shell.d.ts.map +1 -1
  87. package/dist/utils/shell.js +204 -1
  88. package/dist/utils/shell.js.map +1 -1
  89. package/dist/utils/ui-types.d.ts +2 -0
  90. package/dist/utils/ui-types.d.ts.map +1 -1
  91. package/dist/utils/ui.d.ts +2 -0
  92. package/dist/utils/ui.d.ts.map +1 -1
  93. package/dist/utils/ui.js +96 -22
  94. package/dist/utils/ui.js.map +1 -1
  95. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/update/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/update/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,WAAW,MAAM,uBAAuB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAKlD,SAAS,iBAAiB;IACxB,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,OAAO,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,EAAE,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAC3C,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAKD,KAAK,UAAU,gBAAgB;IAC7B,IAAI,CAAC;QACH,OAAO,MAAM,qBAAqB,EAAE,CAAC;IACvC,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,EAAE,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAC7D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAKD,KAAK,UAAU,oBAAoB;IAEjC,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACtC,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;IAET,CAAC;IAED,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QACjC,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;IAET,CAAC;IAGD,OAAO,KAAK,CAAC;AACf,CAAC;AAKD,KAAK,UAAU,aAAa,CAAC,cAA8B,EAAE,KAAc;IACzE,MAAM,QAAQ,GAAqC;QACjD,GAAG,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,qBAAqB,CAAC;QAC7C,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,qBAAqB,CAAC;QAC1C,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,qBAAqB,CAAC;KAC/C,CAAC;IAEF,IAAI,KAAK,EAAE,CAAC;QAEV,IAAI,cAAc,KAAK,KAAK,EAAE,CAAC;YAC7B,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;YACrC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAKD,MAAM,KAAK,CAAC,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE;QACpD,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;KAClD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEtC,OAAO;SACJ,WAAW,CAAC,sCAAsC,CAAC;SACnD,MAAM,CAAC,cAAc,EAAE,2CAA2C,CAAC;SACnE,MAAM,CAAC,SAAS,EAAE,gDAAgD,CAAC;SACnE,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAgB,EAAE,EAAE;QAE3C,IAAI,gBAA+B,CAAC;QACpC,IAAI,CAAC;YACH,gBAAgB,GAAG,QAAQ,CAAC,mBAAmB,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAC9E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,oBAAoB,cAAc,EAAE,CAAC,CAAC;QAEnD,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QACnD,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,IAAI,aAAqB,CAAC;QAC1B,IAAI,CAAC;YACH,aAAa,GAAG,MAAM,gBAAgB,EAAE,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAC5C,EAAE,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAC;YACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,mBAAmB,aAAa,EAAE,CAAC,CAAC;QAEjD,MAAM,UAAU,GAAG,eAAe,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;QAElE,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;YAC1D,EAAE,CAAC,IAAI,CAAC,oBAAoB,cAAc,EAAE,CAAC,CAAC;YAE9C,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;gBAC5B,OAAO;YACT,CAAC;YAED,EAAE,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QAC9D,CAAC;aAAM,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CACV,+BAA+B,cAAc,6BAA6B,aAAa,GAAG,CAC3F,CAAC;YAEF,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;gBAC3D,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;gBAClC,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;oBAEtC,MAAM,IAAI,mBAAmB,CAC3B,kBAAkB,cAAc,OAAO,aAAa,4BAA4B,EAChF,SAAS,CACV,CAAC;gBACJ,CAAC;gBACD,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;oBAChD;wBACE,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,iBAAiB;wBACvB,OAAO,EAAE,wDAAwD;wBACjE,OAAO,EAAE,KAAK;qBACf;iBACF,CAAC,CAAC;gBAEH,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;oBAC7B,OAAO;gBACT,CAAC;YACH,CAAC;iBAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;gBACnC,OAAO;YACT,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;YACrC,EAAE,CAAC,QAAQ,CAAC;gBACV,CAAC,iBAAiB,EAAE,cAAc,CAAC;gBACnC,CAAC,gBAAgB,EAAE,aAAa,CAAC;aAClC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,gBAAgB,CAAC,SAAS,EAAE,CAAC;YAC/B,QAAQ,CAAC;gBACP,EAAE,EAAE,IAAI;gBACR,OAAO,EAAE,QAAQ;gBACjB,cAAc;gBACd,aAAa;gBACb,eAAe,EAAE,UAAU,GAAG,CAAC;aAChC,CAAC,CAAC;YACH,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACnB,EAAE,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;YAClC,IAAI,OAAgB,CAAC;YACrB,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;iBAAM,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;gBAEhC,MAAM,IAAI,mBAAmB,CAC3B,aAAa,aAAa,wBAAwB,EAClD,OAAO,CACR,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;oBACnC;wBACE,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,qBAAqB,aAAa,GAAG;wBAC9C,OAAO,EAAE,IAAI;qBACd;iBACF,CAAC,CAAC;gBACH,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACpC,CAAC;YAED,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;gBAC7B,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAG,EAAE,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QAC9D,aAAa,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,cAAc,GAAG,MAAM,oBAAoB,EAAE,CAAC;QACpD,aAAa,CAAC,IAAI,GAAG,gBAAgB,cAAc,KAAK,CAAC;QAEzD,MAAM,CAAC,KAAK,CAAC,0BAA0B,cAAc,EAAE,CAAC,CAAC;QAEzD,IAAI,CAAC;YACH,MAAM,aAAa,CAAC,cAAc,EAAE,gBAAgB,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;YACrE,aAAa,CAAC,OAAO,CAAC,mCAAmC,aAAa,GAAG,CAAC,CAAC;YAE3E,QAAQ,CAAC;gBACP,EAAE,EAAE,IAAI;gBACR,OAAO,EAAE,QAAQ;gBACjB,IAAI,EAAE,cAAc;gBACpB,EAAE,EAAE,aAAa;gBACjB,cAAc;aACf,CAAC,CAAC;YAEH,EAAE,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAEpC,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAE5E,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBAClF,EAAE,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;gBACtD,EAAE,CAAC,KAAK,CACN,UAAU,cAAc,IAAI,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,yBAAyB,CAClG,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,KAAK,CAAC,kBAAkB,YAAY,EAAE,CAAC,CAAC;gBAC3C,EAAE,CAAC,KAAK,CACN,0BAA0B,cAAc,IAAI,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,yBAAyB,CAClH,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC,CAAC;IAEN,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -40,12 +40,12 @@ export declare const gitBranchOptionsSchema: z.ZodObject<{
40
40
  force: z.ZodOptional<z.ZodBoolean>;
41
41
  }, z.core.$strip>;
42
42
  export declare const commitTypeSchema: z.ZodEnum<{
43
+ test: "test";
43
44
  feat: "feat";
44
45
  fix: "fix";
45
46
  docs: "docs";
46
47
  style: "style";
47
48
  refactor: "refactor";
48
- test: "test";
49
49
  chore: "chore";
50
50
  }>;
51
51
  export declare const commitScopeSchema: z.ZodOptional<z.ZodString>;
@@ -56,12 +56,12 @@ export declare const gitCommitOptionsSchema: z.ZodObject<{
56
56
  color: z.ZodOptional<z.ZodBoolean>;
57
57
  banner: z.ZodOptional<z.ZodBoolean>;
58
58
  type: z.ZodOptional<z.ZodEnum<{
59
+ test: "test";
59
60
  feat: "feat";
60
61
  fix: "fix";
61
62
  docs: "docs";
62
63
  style: "style";
63
64
  refactor: "refactor";
64
- test: "test";
65
65
  chore: "chore";
66
66
  }>>;
67
67
  scope: z.ZodOptional<z.ZodString>;
@@ -1,6 +1,44 @@
1
+ import type { Command } from '@commander-js/extra-typings';
2
+ export interface OptionNode {
3
+ flags: string;
4
+ long: string;
5
+ short?: string;
6
+ description: string;
7
+ required: boolean;
8
+ isBoolean: boolean;
9
+ isVariadic: boolean;
10
+ argName?: string;
11
+ choices?: string[];
12
+ }
13
+ export interface ArgumentNode {
14
+ name: string;
15
+ description: string;
16
+ required: boolean;
17
+ variadic: boolean;
18
+ choices?: string[];
19
+ }
20
+ export interface CommandNode {
21
+ name: string;
22
+ description: string;
23
+ options: OptionNode[];
24
+ arguments: ArgumentNode[];
25
+ subcommands: CommandNode[];
26
+ allowUnknownOption: boolean;
27
+ }
28
+ export interface DynamicCompletion {
29
+ functionName: string;
30
+ shellCommand: string;
31
+ description: string;
32
+ }
33
+ export declare function walkCommandTree(command: Command): CommandNode;
34
+ export declare function generateZshCompletions(root: CommandNode): string;
35
+ export declare function generateBashCompletions(root: CommandNode): string;
36
+ export declare function generateFishCompletions(root: CommandNode): string;
37
+ export type ShellType = 'zsh' | 'bash' | 'fish';
1
38
  export declare class CompletionGenerator {
39
+ static generateCompletions(program: Command, shell: ShellType): string;
2
40
  static generateZshCompletions(): string;
3
- static createCompletionFiles(completionsPath: string): Promise<void>;
4
- static updateCompletions(completionsPath: string): Promise<void>;
41
+ static createCompletionFiles(completionsPath: string, program?: Command): Promise<void>;
42
+ static updateCompletions(completionsPath: string, program?: Command): Promise<void>;
5
43
  }
6
44
  //# sourceMappingURL=completions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"completions.d.ts","sourceRoot":"","sources":["../../src/utils/completions.ts"],"names":[],"mappings":"AAIA,qBAAa,mBAAmB;IAI9B,MAAM,CAAC,sBAAsB,IAAI,MAAM;WAmF1B,qBAAqB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;WA+B7D,iBAAiB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAIvE"}
1
+ {"version":3,"file":"completions.d.ts","sourceRoot":"","sources":["../../src/utils/completions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAI3D,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,WAAW,EAAE,WAAW,EAAE,CAAC;IAC3B,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAID,MAAM,WAAW,iBAAiB;IAEhC,YAAY,EAAE,MAAM,CAAC;IAErB,YAAY,EAAE,MAAM,CAAC;IAErB,WAAW,EAAE,MAAM,CAAC;CACrB;AAgCD,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CAuD7D;AAID,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAgChE;AA4ID,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAiCjE;AA6ED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CA8BjE;AAwED,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAIhD,qBAAa,mBAAmB;IAI9B,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM;IAgBtE,MAAM,CAAC,sBAAsB,IAAI,MAAM;WAQ1B,qBAAqB,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;WAyChF,iBAAiB,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAG1F"}
@@ -1,93 +1,413 @@
1
1
  import { writeFile, mkdir } from 'fs/promises';
2
2
  import { join } from 'path';
3
3
  import { logger } from './logger.js';
4
+ const DYNAMIC_COMPLETIONS = {
5
+ branches: {
6
+ functionName: '_neo_git_branches',
7
+ shellCommand: "git branch --list --format='%(refname:short)' 2>/dev/null",
8
+ description: 'Git branch names',
9
+ },
10
+ remotes: {
11
+ functionName: '_neo_git_remotes',
12
+ shellCommand: 'git remote 2>/dev/null',
13
+ description: 'Git remote names',
14
+ },
15
+ };
16
+ const COMMIT_TYPES = ['feat', 'fix', 'docs', 'style', 'refactor', 'test', 'chore'];
17
+ const CONFIG_KEYS = [
18
+ 'preferences.banner',
19
+ 'preferences.theme',
20
+ 'preferences.aliases.n',
21
+ 'ai.enabled',
22
+ 'ai.model',
23
+ 'shell.type',
24
+ 'shell.rcFile',
25
+ 'updates.lastCheckedAt',
26
+ 'updates.latestVersion',
27
+ 'plugins.enabled',
28
+ ];
29
+ export function walkCommandTree(command) {
30
+ const options = [];
31
+ for (const opt of command.options) {
32
+ const flags = opt.flags;
33
+ const long = opt.long ?? '';
34
+ const short = opt.short;
35
+ const isBoolean = !opt.required && !opt.optional;
36
+ const shortStr = short?.replace(/^-/, '');
37
+ const argChoices = opt.argChoices;
38
+ const optNode = {
39
+ flags,
40
+ long: long.replace(/^--/, ''),
41
+ description: opt.description ?? '',
42
+ required: opt.required ?? false,
43
+ isBoolean,
44
+ isVariadic: opt.variadic ?? false,
45
+ };
46
+ if (shortStr)
47
+ optNode.short = shortStr;
48
+ const argNameStr = opt.long?.replace(/^--/, '');
49
+ if (!isBoolean && argNameStr)
50
+ optNode.argName = argNameStr;
51
+ if (argChoices)
52
+ optNode.choices = argChoices;
53
+ options.push(optNode);
54
+ }
55
+ const args = [];
56
+ for (const arg of command.registeredArguments ?? []) {
57
+ const argNode = {
58
+ name: arg._name,
59
+ description: arg.description ?? '',
60
+ required: arg.required,
61
+ variadic: arg.variadic ?? false,
62
+ };
63
+ if (arg.argChoices)
64
+ argNode.choices = arg.argChoices;
65
+ args.push(argNode);
66
+ }
67
+ const subcommands = [];
68
+ for (const sub of command.commands) {
69
+ if (sub.name() === 'help')
70
+ continue;
71
+ subcommands.push(walkCommandTree(sub));
72
+ }
73
+ return {
74
+ name: command.name(),
75
+ description: command.description() ?? '',
76
+ options,
77
+ arguments: args,
78
+ subcommands,
79
+ allowUnknownOption: command._allowUnknownOption ?? false,
80
+ };
81
+ }
82
+ export function generateZshCompletions(root) {
83
+ const lines = [];
84
+ lines.push('#compdef neo n');
85
+ lines.push('');
86
+ lines.push('# Neo CLI completion script (auto-generated)');
87
+ lines.push('# Do not edit manually - regenerate with: neo completions zsh');
88
+ lines.push('');
89
+ lines.push('# Dynamic completion helpers');
90
+ for (const [, dc] of Object.entries(DYNAMIC_COMPLETIONS)) {
91
+ lines.push(`${dc.functionName}() {`);
92
+ lines.push(` local -a items`);
93
+ lines.push(` items=(\${(f)"$(${dc.shellCommand})"})`);
94
+ lines.push(` compadd -a items`);
95
+ lines.push('}');
96
+ lines.push('');
97
+ }
98
+ generateZshCommandFunction(root, lines, []);
99
+ lines.push('');
100
+ lines.push('# Main completion function');
101
+ lines.push('_neo "$@"');
102
+ lines.push('');
103
+ lines.push("# Also provide completion for 'n' alias");
104
+ lines.push('compdef _neo n');
105
+ lines.push('');
106
+ return lines.join('\n');
107
+ }
108
+ function zshFunctionName(path) {
109
+ if (path.length === 0)
110
+ return '_neo';
111
+ return '_neo_' + path.join('_');
112
+ }
113
+ function generateZshCommandFunction(node, lines, path) {
114
+ const funcName = zshFunctionName(path);
115
+ for (const sub of node.subcommands) {
116
+ generateZshCommandFunction(sub, lines, [...path, sub.name]);
117
+ }
118
+ lines.push(`${funcName}() {`);
119
+ if (node.subcommands.length > 0) {
120
+ lines.push(' local context state line');
121
+ lines.push('');
122
+ const argParts = [];
123
+ argParts.push("'1: :->cmds'");
124
+ argParts.push("'*::arg:->args'");
125
+ for (const opt of node.options) {
126
+ argParts.push(`'${formatZshOption(opt)}'`);
127
+ }
128
+ lines.push(` _arguments -C \\`);
129
+ for (let i = 0; i < argParts.length; i++) {
130
+ const sep = i < argParts.length - 1 ? ' \\' : '';
131
+ lines.push(` ${argParts[i]}${sep}`);
132
+ }
133
+ lines.push('');
134
+ lines.push(' case $state in');
135
+ lines.push(' cmds)');
136
+ lines.push(' local -a commands');
137
+ lines.push(' commands=(');
138
+ for (const sub of node.subcommands) {
139
+ const desc = sub.description.replace(/'/g, "'\\''");
140
+ lines.push(` '${sub.name}:${desc}'`);
141
+ }
142
+ lines.push(' )');
143
+ lines.push(" _describe 'commands' commands");
144
+ lines.push(' ;;');
145
+ lines.push(' args)');
146
+ lines.push(' case $words[1] in');
147
+ for (const sub of node.subcommands) {
148
+ const subFuncName = zshFunctionName([...path, sub.name]);
149
+ lines.push(` ${sub.name})`);
150
+ lines.push(` ${subFuncName}`);
151
+ lines.push(' ;;');
152
+ }
153
+ lines.push(' esac');
154
+ lines.push(' ;;');
155
+ lines.push(' esac');
156
+ }
157
+ else {
158
+ const argParts = [];
159
+ for (const opt of node.options) {
160
+ argParts.push(`'${formatZshOption(opt)}'`);
161
+ }
162
+ for (let i = 0; i < node.arguments.length; i++) {
163
+ const arg = node.arguments[i];
164
+ const argSpec = formatZshArgument(arg, i + 1, node);
165
+ if (argSpec)
166
+ argParts.push(`'${argSpec}'`);
167
+ }
168
+ if (argParts.length > 0) {
169
+ lines.push(' _arguments \\');
170
+ for (let i = 0; i < argParts.length; i++) {
171
+ const sep = i < argParts.length - 1 ? ' \\' : '';
172
+ lines.push(` ${argParts[i]}${sep}`);
173
+ }
174
+ }
175
+ }
176
+ lines.push('}');
177
+ lines.push('');
178
+ }
179
+ function formatZshOption(opt) {
180
+ const desc = opt.description.replace(/'/g, "'\\''").replace(/\[/g, '\\[').replace(/\]/g, '\\]');
181
+ const longFlag = `--${opt.long}`;
182
+ if (opt.isBoolean) {
183
+ return `${longFlag}[${desc}]`;
184
+ }
185
+ if (opt.choices) {
186
+ const choiceStr = opt.choices.join(' ');
187
+ return `${longFlag}=[${desc}]:${opt.long}:(${choiceStr})`;
188
+ }
189
+ return `${longFlag}=[${desc}]:${opt.long}:`;
190
+ }
191
+ function formatZshArgument(arg, position, parentNode) {
192
+ const desc = arg.description.replace(/'/g, "'\\''");
193
+ if (arg.name === 'branch' || arg.name === 'name') {
194
+ if (isGitContext(parentNode)) {
195
+ return `${position}: :${DYNAMIC_COMPLETIONS.branches.functionName}`;
196
+ }
197
+ }
198
+ if (arg.name === 'type' || (arg.name === 'key' && parentNode.name === 'set')) {
199
+ if (arg.choices) {
200
+ return `${position}:${desc}:(${arg.choices.join(' ')})`;
201
+ }
202
+ }
203
+ if (arg.name === 'key' && (parentNode.name === 'get' || parentNode.name === 'set')) {
204
+ return `${position}:${desc}:(${CONFIG_KEYS.join(' ')})`;
205
+ }
206
+ if (arg.variadic) {
207
+ return `*:${desc}:`;
208
+ }
209
+ return `${position}:${desc}:`;
210
+ }
211
+ function isGitContext(node) {
212
+ return node.name === 'add' || node.name === 'remove' || node.name === 'switch' || node.name === 'branch';
213
+ }
214
+ export function generateBashCompletions(root) {
215
+ const lines = [];
216
+ lines.push('#!/bin/bash');
217
+ lines.push('');
218
+ lines.push('# Neo CLI completion script for Bash (auto-generated)');
219
+ lines.push('# Do not edit manually - regenerate with: neo completions bash');
220
+ lines.push('');
221
+ lines.push('# Dynamic completion helpers');
222
+ for (const [, dc] of Object.entries(DYNAMIC_COMPLETIONS)) {
223
+ lines.push(`${dc.functionName}() {`);
224
+ lines.push(` ${dc.shellCommand}`);
225
+ lines.push('}');
226
+ lines.push('');
227
+ }
228
+ lines.push('_neo_completions() {');
229
+ lines.push(' local cur prev words cword');
230
+ lines.push(' _init_completion || return');
231
+ lines.push('');
232
+ generateBashCaseBlock(root, lines, 1);
233
+ lines.push('}');
234
+ lines.push('');
235
+ lines.push('complete -F _neo_completions neo');
236
+ lines.push('complete -F _neo_completions n');
237
+ lines.push('');
238
+ return lines.join('\n');
239
+ }
240
+ function generateBashCaseBlock(node, lines, depth) {
241
+ const indent = ' '.repeat(depth);
242
+ if (node.subcommands.length === 0) {
243
+ const opts = node.options.map((o) => `--${o.long}`).join(' ');
244
+ lines.push(`${indent}COMPREPLY=($(compgen -W "${opts}" -- "$cur"))`);
245
+ return;
246
+ }
247
+ const subcmdNames = node.subcommands.map((s) => s.name).join(' ');
248
+ const opts = node.options.map((o) => `--${o.long}`).join(' ');
249
+ const allWords = [subcmdNames, opts].filter(Boolean).join(' ');
250
+ if (depth === 1) {
251
+ lines.push(`${indent}case "\${words[1]}" in`);
252
+ for (const sub of node.subcommands) {
253
+ lines.push(`${indent} ${sub.name})`);
254
+ if (sub.subcommands.length > 0) {
255
+ generateBashSubcommandCase(sub, lines, depth + 2);
256
+ }
257
+ else {
258
+ const subOpts = sub.options.map((o) => `--${o.long}`).join(' ');
259
+ lines.push(`${indent} COMPREPLY=($(compgen -W "${subOpts}" -- "$cur"))`);
260
+ }
261
+ lines.push(`${indent} return`);
262
+ lines.push(`${indent} ;;`);
263
+ }
264
+ lines.push(`${indent}esac`);
265
+ lines.push('');
266
+ lines.push(`${indent}if [[ $cword -eq 1 ]]; then`);
267
+ lines.push(`${indent} COMPREPLY=($(compgen -W "${allWords}" -- "$cur"))`);
268
+ lines.push(`${indent}fi`);
269
+ }
270
+ }
271
+ function generateBashSubcommandCase(node, lines, depth) {
272
+ const indent = ' '.repeat(depth);
273
+ const subcmdNames = node.subcommands.map((s) => s.name).join(' ');
274
+ const opts = node.options.map((o) => `--${o.long}`).join(' ');
275
+ const allWords = [subcmdNames, opts].filter(Boolean).join(' ');
276
+ lines.push(`${indent}case "\${words[2]}" in`);
277
+ for (const sub of node.subcommands) {
278
+ lines.push(`${indent} ${sub.name})`);
279
+ if (sub.subcommands.length > 0) {
280
+ const deepSubNames = sub.subcommands.map((s) => s.name).join(' ');
281
+ const deepOpts = sub.options.map((o) => `--${o.long}`).join(' ');
282
+ lines.push(`${indent} COMPREPLY=($(compgen -W "${deepSubNames} ${deepOpts}" -- "$cur"))`);
283
+ }
284
+ else {
285
+ const subOpts = sub.options.map((o) => `--${o.long}`).join(' ');
286
+ if (node.name === 'git' && sub.name === 'commit') {
287
+ lines.push(`${indent} if [[ "$prev" == "--type" || "$prev" == "-t" ]]; then`);
288
+ lines.push(`${indent} COMPREPLY=($(compgen -W "${COMMIT_TYPES.join(' ')}" -- "$cur"))`);
289
+ lines.push(`${indent} else`);
290
+ lines.push(`${indent} COMPREPLY=($(compgen -W "${subOpts}" -- "$cur"))`);
291
+ lines.push(`${indent} fi`);
292
+ }
293
+ else {
294
+ lines.push(`${indent} COMPREPLY=($(compgen -W "${subOpts}" -- "$cur"))`);
295
+ }
296
+ }
297
+ lines.push(`${indent} return`);
298
+ lines.push(`${indent} ;;`);
299
+ }
300
+ lines.push(`${indent}esac`);
301
+ lines.push(`${indent}if [[ $cword -eq 2 ]]; then`);
302
+ lines.push(`${indent} COMPREPLY=($(compgen -W "${allWords}" -- "$cur"))`);
303
+ lines.push(`${indent}fi`);
304
+ }
305
+ export function generateFishCompletions(root) {
306
+ const lines = [];
307
+ lines.push('# Neo CLI completion script for Fish (auto-generated)');
308
+ lines.push('# Do not edit manually - regenerate with: neo completions fish');
309
+ lines.push('');
310
+ for (const [, dc] of Object.entries(DYNAMIC_COMPLETIONS)) {
311
+ lines.push(`function ${dc.functionName}`);
312
+ lines.push(` ${dc.shellCommand}`);
313
+ lines.push('end');
314
+ lines.push('');
315
+ }
316
+ lines.push('# Clear existing completions');
317
+ lines.push('complete -c neo -e');
318
+ lines.push('');
319
+ generateFishCommandCompletions(root, lines, []);
320
+ lines.push('');
321
+ lines.push("# Alias 'n' completions");
322
+ lines.push('complete -c n -w neo');
323
+ lines.push('');
324
+ return lines.join('\n');
325
+ }
326
+ function generateFishCommandCompletions(node, lines, path) {
327
+ const isRoot = path.length === 0;
328
+ const condition = fishCondition(path);
329
+ if (isRoot) {
330
+ for (const opt of node.options) {
331
+ const parts = ['complete -c neo'];
332
+ parts.push('-n "__fish_use_subcommand"');
333
+ if (opt.short)
334
+ parts.push(`-s ${opt.short}`);
335
+ parts.push(`-l ${opt.long}`);
336
+ parts.push(`-d '${opt.description.replace(/'/g, "\\'")}'`);
337
+ lines.push(parts.join(' '));
338
+ }
339
+ lines.push('');
340
+ }
341
+ for (const sub of node.subcommands) {
342
+ const parts = ['complete -c neo'];
343
+ parts.push(`-n "${condition}"`);
344
+ parts.push(`-f -a ${sub.name}`);
345
+ parts.push(`-d '${sub.description.replace(/'/g, "\\'")}'`);
346
+ lines.push(parts.join(' '));
347
+ }
348
+ if (node.subcommands.length > 0) {
349
+ lines.push('');
350
+ }
351
+ for (const sub of node.subcommands) {
352
+ const subPath = [...path, sub.name];
353
+ for (const opt of sub.options) {
354
+ const subCondition = fishSubcommandCondition(subPath);
355
+ const parts = ['complete -c neo'];
356
+ parts.push(`-n "${subCondition}"`);
357
+ if (opt.short)
358
+ parts.push(`-s ${opt.short}`);
359
+ parts.push(`-l ${opt.long}`);
360
+ parts.push(`-d '${opt.description.replace(/'/g, "\\'")}'`);
361
+ if (opt.choices) {
362
+ parts.push(`-r -f -a '${opt.choices.join(' ')}'`);
363
+ }
364
+ lines.push(parts.join(' '));
365
+ }
366
+ if (sub.subcommands.length > 0) {
367
+ generateFishCommandCompletions(sub, lines, subPath);
368
+ }
369
+ }
370
+ }
371
+ function fishCondition(path) {
372
+ if (path.length === 0) {
373
+ return '__fish_use_subcommand';
374
+ }
375
+ return path.map((p) => `__fish_seen_subcommand_from ${p}`).join('; and ');
376
+ }
377
+ function fishSubcommandCondition(path) {
378
+ return path.map((p) => `__fish_seen_subcommand_from ${p}`).join('; and ');
379
+ }
4
380
  export class CompletionGenerator {
381
+ static generateCompletions(program, shell) {
382
+ const root = walkCommandTree(program);
383
+ switch (shell) {
384
+ case 'zsh':
385
+ return generateZshCompletions(root);
386
+ case 'bash':
387
+ return generateBashCompletions(root);
388
+ case 'fish':
389
+ return generateFishCompletions(root);
390
+ }
391
+ }
5
392
  static generateZshCompletions() {
6
- return `#compdef neo n
7
-
8
- # Neo CLI completion script
9
- # This file provides command completion for neo CLI in ZSH
10
-
11
- _neo_commands() {
12
- local -a commands
13
- commands=(
14
- 'init:Install and configure Neo CLI globally'
15
- 'config:Manage configuration'
16
- 'git:Git operations and utilities'
17
- 'help:Display help for command'
18
- )
19
- _describe 'neo commands' commands
20
- }
21
-
22
- _neo_config_subcommands() {
23
- local -a subcommands
24
- subcommands=(
25
- 'get:Get a configuration value'
26
- 'set:Set a configuration value'
27
- 'list:List all configuration values'
28
- )
29
- _describe 'config subcommands' subcommands
30
- }
31
-
32
- _neo_git_subcommands() {
33
- local -a subcommands
34
- subcommands=(
35
- 'push:Push commits to remote repository'
36
- )
37
- _describe 'git subcommands' subcommands
38
- }
39
-
40
- _neo() {
41
- local context state line
42
-
43
- _arguments -C \\
44
- '1: :_neo_commands' \\
45
- '*::arg:->args' \\
46
- '--verbose[Enable verbose logging]' \\
47
- '--config=[Path to config file]:file:_files' \\
48
- '--no-color[Disable colored output]' \\
49
- '--no-banner[Hide banner]' \\
50
- '--help[Show help]' \\
51
- '--version[Show version]'
52
-
53
- case $state in
54
- args)
55
- case $words[1] in
56
- config)
57
- _arguments -C \\
58
- '1: :_neo_config_subcommands' \\
59
- '*::arg:->config_args'
60
- ;;
61
- git)
62
- _arguments -C \\
63
- '1: :_neo_git_subcommands' \\
64
- '*::arg:->git_args'
65
- ;;
66
- init)
67
- _arguments \\
68
- '--force[Force reconfiguration if already initialized]' \\
69
- '--skip-install[Skip global installation]' \\
70
- '--help[Show help]'
71
- ;;
72
- esac
73
- ;;
74
- esac
75
- }
76
-
77
- # Main completion function
78
- _neo "$@"
79
-
80
- # Also provide completion for 'n' alias
81
- compdef _neo n
82
- `;
393
+ return generateZshCompletions(buildFallbackTree());
83
394
  }
84
- static async createCompletionFiles(completionsPath) {
395
+ static async createCompletionFiles(completionsPath, program) {
85
396
  try {
86
397
  await mkdir(completionsPath, { recursive: true });
87
- const completionFile = join(completionsPath, '_neo');
88
- const completionContent = this.generateZshCompletions();
89
- await writeFile(completionFile, completionContent, 'utf-8');
90
- logger.debug(`Created completion file: ${completionFile}`);
398
+ const root = program ? walkCommandTree(program) : buildFallbackTree();
399
+ const zshFile = join(completionsPath, '_neo');
400
+ const zshContent = generateZshCompletions(root);
401
+ await writeFile(zshFile, zshContent, 'utf-8');
402
+ logger.debug(`Created completion file: ${zshFile}`);
403
+ const bashFile = join(completionsPath, 'neo.bash');
404
+ const bashContent = generateBashCompletions(root);
405
+ await writeFile(bashFile, bashContent, 'utf-8');
406
+ logger.debug(`Created completion file: ${bashFile}`);
407
+ const fishFile = join(completionsPath, 'neo.fish');
408
+ const fishContent = generateFishCompletions(root);
409
+ await writeFile(fishFile, fishContent, 'utf-8');
410
+ logger.debug(`Created completion file: ${fishFile}`);
91
411
  const aliasCompletionFile = join(completionsPath, '_n');
92
412
  const aliasContent = `#compdef n
93
413
  # Completion for 'n' alias (points to neo)
@@ -101,8 +421,43 @@ compdef neo n
101
421
  throw error;
102
422
  }
103
423
  }
104
- static async updateCompletions(completionsPath) {
105
- await this.createCompletionFiles(completionsPath);
424
+ static async updateCompletions(completionsPath, program) {
425
+ await this.createCompletionFiles(completionsPath, program);
106
426
  }
107
427
  }
428
+ function buildFallbackTree() {
429
+ return {
430
+ name: 'neo',
431
+ description: 'Neo CLI',
432
+ options: [
433
+ { flags: '-v, --verbose', long: 'verbose', short: 'v', description: 'Enable verbose logging', required: false, isBoolean: true, isVariadic: false },
434
+ { flags: '-c, --config <path>', long: 'config', short: 'c', description: 'Path to config file', required: false, isBoolean: false, isVariadic: false, argName: 'path' },
435
+ { flags: '--no-color', long: 'color', description: 'Disable colored output', required: false, isBoolean: true, isVariadic: false },
436
+ { flags: '--no-banner', long: 'banner', description: 'Hide banner', required: false, isBoolean: true, isVariadic: false },
437
+ ],
438
+ arguments: [],
439
+ subcommands: [
440
+ { name: 'init', description: 'Install and configure Neo CLI globally', options: [], arguments: [], subcommands: [], allowUnknownOption: false },
441
+ { name: 'config', description: 'Manage configuration', options: [], arguments: [], subcommands: [
442
+ { name: 'get', description: 'Get a configuration value', options: [], arguments: [{ name: 'key', description: 'Configuration key', required: true, variadic: false }], subcommands: [], allowUnknownOption: false },
443
+ { name: 'set', description: 'Set a configuration value', options: [], arguments: [{ name: 'key', description: 'Configuration key', required: true, variadic: false }], subcommands: [], allowUnknownOption: false },
444
+ { name: 'list', description: 'List all configuration values', options: [], arguments: [], subcommands: [], allowUnknownOption: false },
445
+ ], allowUnknownOption: false },
446
+ { name: 'git', description: 'Git operations and utilities', options: [], arguments: [], subcommands: [
447
+ { name: 'commit', description: 'Create a conventional commit', options: [], arguments: [], subcommands: [], allowUnknownOption: false },
448
+ { name: 'push', description: 'Push commits to remote repository', options: [], arguments: [], subcommands: [], allowUnknownOption: false },
449
+ { name: 'pull', description: 'Pull changes from remote repository', options: [], arguments: [], subcommands: [], allowUnknownOption: false },
450
+ { name: 'branch', description: 'Analyze and manage local git branches', options: [], arguments: [], subcommands: [], allowUnknownOption: false },
451
+ { name: 'stash', description: 'Interactively manage git stashes', options: [], arguments: [], subcommands: [], allowUnknownOption: false },
452
+ { name: 'worktree', description: 'Manage git worktrees', options: [], arguments: [], subcommands: [], allowUnknownOption: false },
453
+ ], allowUnknownOption: false },
454
+ { name: 'gh', description: 'GitHub CLI operations', options: [], arguments: [], subcommands: [], allowUnknownOption: false },
455
+ { name: 'pr', description: 'Create a pull request', options: [], arguments: [], subcommands: [], allowUnknownOption: false },
456
+ { name: 'alias', description: 'Manage shell aliases', options: [], arguments: [], subcommands: [], allowUnknownOption: false },
457
+ { name: 'update', description: 'Update Neo CLI to the latest version', options: [], arguments: [], subcommands: [], allowUnknownOption: false },
458
+ { name: 'agent', description: 'Manage AI agent context and configuration', options: [], arguments: [], subcommands: [], allowUnknownOption: false },
459
+ ],
460
+ allowUnknownOption: false,
461
+ };
462
+ }
108
463
  //# sourceMappingURL=completions.js.map