@sudosandwich/limps 2.8.0 → 2.10.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 (123) hide show
  1. package/README.md +86 -0
  2. package/dist/agent-parser.d.ts +6 -0
  3. package/dist/agent-parser.d.ts.map +1 -1
  4. package/dist/agent-parser.js +30 -0
  5. package/dist/agent-parser.js.map +1 -1
  6. package/dist/cli/config-cmd.d.ts +12 -0
  7. package/dist/cli/config-cmd.d.ts.map +1 -1
  8. package/dist/cli/config-cmd.js +143 -1
  9. package/dist/cli/config-cmd.js.map +1 -1
  10. package/dist/cli/json-output.d.ts +3 -0
  11. package/dist/cli/json-output.d.ts.map +1 -1
  12. package/dist/cli/json-output.js +3 -0
  13. package/dist/cli/json-output.js.map +1 -1
  14. package/dist/cli/list-agents.d.ts.map +1 -1
  15. package/dist/cli/list-agents.js +10 -4
  16. package/dist/cli/list-agents.js.map +1 -1
  17. package/dist/cli/next-task.d.ts +27 -3
  18. package/dist/cli/next-task.d.ts.map +1 -1
  19. package/dist/cli/next-task.js +261 -35
  20. package/dist/cli/next-task.js.map +1 -1
  21. package/dist/cli/plan-repair.d.ts +26 -0
  22. package/dist/cli/plan-repair.d.ts.map +1 -0
  23. package/dist/cli/plan-repair.js +145 -0
  24. package/dist/cli/plan-repair.js.map +1 -0
  25. package/dist/cli.js +3 -1
  26. package/dist/cli.js.map +1 -1
  27. package/dist/commands/config/index.d.ts.map +1 -1
  28. package/dist/commands/config/index.js +31 -2
  29. package/dist/commands/config/index.js.map +1 -1
  30. package/dist/commands/config/list.d.ts.map +1 -1
  31. package/dist/commands/config/list.js +13 -3
  32. package/dist/commands/config/list.js.map +1 -1
  33. package/dist/commands/config/scoring.d.ts +13 -0
  34. package/dist/commands/config/scoring.d.ts.map +1 -0
  35. package/dist/commands/config/scoring.js +104 -0
  36. package/dist/commands/config/scoring.js.map +1 -0
  37. package/dist/commands/config/sync-mcp.d.ts +1 -1
  38. package/dist/commands/index.d.ts.map +1 -1
  39. package/dist/commands/index.js +1 -1
  40. package/dist/commands/index.js.map +1 -1
  41. package/dist/commands/list-agents.d.ts +1 -0
  42. package/dist/commands/list-agents.d.ts.map +1 -1
  43. package/dist/commands/list-agents.js +54 -15
  44. package/dist/commands/list-agents.js.map +1 -1
  45. package/dist/commands/list-plans.d.ts +1 -0
  46. package/dist/commands/list-plans.d.ts.map +1 -1
  47. package/dist/commands/list-plans.js +41 -16
  48. package/dist/commands/list-plans.js.map +1 -1
  49. package/dist/commands/next-task.d.ts +1 -0
  50. package/dist/commands/next-task.d.ts.map +1 -1
  51. package/dist/commands/next-task.js +61 -25
  52. package/dist/commands/next-task.js.map +1 -1
  53. package/dist/commands/reindex.d.ts +12 -0
  54. package/dist/commands/reindex.d.ts.map +1 -0
  55. package/dist/commands/reindex.js +64 -0
  56. package/dist/commands/reindex.js.map +1 -0
  57. package/dist/commands/repair-plans.d.ts +16 -0
  58. package/dist/commands/repair-plans.d.ts.map +1 -0
  59. package/dist/commands/repair-plans.js +141 -0
  60. package/dist/commands/repair-plans.js.map +1 -0
  61. package/dist/commands/score-all.d.ts +15 -0
  62. package/dist/commands/score-all.d.ts.map +1 -0
  63. package/dist/commands/score-all.js +96 -0
  64. package/dist/commands/score-all.js.map +1 -0
  65. package/dist/commands/score-task.d.ts +15 -0
  66. package/dist/commands/score-task.d.ts.map +1 -0
  67. package/dist/commands/score-task.js +104 -0
  68. package/dist/commands/score-task.js.map +1 -0
  69. package/dist/commands/serve.d.ts +1 -0
  70. package/dist/commands/serve.d.ts.map +1 -1
  71. package/dist/commands/serve.js +6 -3
  72. package/dist/commands/serve.js.map +1 -1
  73. package/dist/commands/status.d.ts +1 -0
  74. package/dist/commands/status.d.ts.map +1 -1
  75. package/dist/commands/status.js +68 -20
  76. package/dist/commands/status.js.map +1 -1
  77. package/dist/components/NextTask.d.ts.map +1 -1
  78. package/dist/components/NextTask.js +2 -1
  79. package/dist/components/NextTask.js.map +1 -1
  80. package/dist/config.d.ts +17 -2
  81. package/dist/config.d.ts.map +1 -1
  82. package/dist/config.js +136 -5
  83. package/dist/config.js.map +1 -1
  84. package/dist/graph/schema.d.ts +4 -0
  85. package/dist/graph/schema.d.ts.map +1 -0
  86. package/dist/graph/schema.js +77 -0
  87. package/dist/graph/schema.js.map +1 -0
  88. package/dist/graph/storage.d.ts +26 -0
  89. package/dist/graph/storage.d.ts.map +1 -0
  90. package/dist/graph/storage.js +441 -0
  91. package/dist/graph/storage.js.map +1 -0
  92. package/dist/graph/types.d.ts +32 -0
  93. package/dist/graph/types.d.ts.map +1 -0
  94. package/dist/graph/types.js +11 -0
  95. package/dist/graph/types.js.map +1 -0
  96. package/dist/indexer.d.ts +6 -0
  97. package/dist/indexer.d.ts.map +1 -1
  98. package/dist/indexer.js +11 -0
  99. package/dist/indexer.js.map +1 -1
  100. package/dist/tools/configure-scoring.d.ts +38 -0
  101. package/dist/tools/configure-scoring.d.ts.map +1 -0
  102. package/dist/tools/configure-scoring.js +325 -0
  103. package/dist/tools/configure-scoring.js.map +1 -0
  104. package/dist/tools/get-next-task.d.ts.map +1 -1
  105. package/dist/tools/get-next-task.js +47 -0
  106. package/dist/tools/get-next-task.js.map +1 -1
  107. package/dist/tools/index.d.ts +3 -1
  108. package/dist/tools/index.d.ts.map +1 -1
  109. package/dist/tools/index.js +121 -22
  110. package/dist/tools/index.js.map +1 -1
  111. package/dist/tools/process-docs.d.ts.map +1 -1
  112. package/dist/tools/process-docs.js +10 -1
  113. package/dist/tools/process-docs.js.map +1 -1
  114. package/dist/tools/update-task-status.d.ts +1 -1
  115. package/dist/utils/cli-help.d.ts +32 -0
  116. package/dist/utils/cli-help.d.ts.map +1 -0
  117. package/dist/utils/cli-help.js +79 -0
  118. package/dist/utils/cli-help.js.map +1 -0
  119. package/dist/utils/config-resolver.d.ts +8 -0
  120. package/dist/utils/config-resolver.d.ts.map +1 -1
  121. package/dist/utils/config-resolver.js +22 -1
  122. package/dist/utils/config-resolver.js.map +1 -1
  123. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,iCAAiC,CAAC;AAE1D,MAAM,CAAC,OAAO,UAAU,aAAa,IAAI,KAAK,CAAC,SAAS,CA2BvD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,iCAAiC,CAAC;AAE1D,MAAM,CAAC,OAAO,UAAU,aAAa,IAAI,KAAK,CAAC,SAAS,CA+BvD"}
@@ -1,7 +1,36 @@
1
- import { jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Text } from 'ink';
3
+ import { buildHelpOutput, getProjectLlmHints, getProjectTipLine } from '../../utils/cli-help.js';
3
4
  export const description = 'Manage project configuration';
4
5
  export default function ConfigCommand() {
5
- return (_jsxs(Text, { children: ["Usage: limps config ", '<command>', '\n', '\n', "Commands:", '\n', ' ', "list Show all registered projects", '\n', ' ', "use ", '<name>', " Set the current/default project", '\n', ' ', "show Display resolved configuration values", '\n', ' ', "path Print the resolved config file path", '\n', ' ', "add ", '<name>', " ", '<path>', " Register an existing config file", '\n', ' ', "sync-mcp [project] [--projects ", '<names>', "] [--client", ' ', '<claude|cursor|claude-code|codex|chatgpt|all>', "] [--global] [--path ", '<path>', "] [--print] [-f] Add/update limps in MCP configs (default: local project config)", '\n', ' ', "update ", '<name>', " [--plans-path ", '<path>', "] [--docs-path ", '<path>', "] Update project paths", '\n', ' ', "remove ", '<name>', " Remove a project and delete config/dir (when under limps/projects)", '\n', ' ', "set ", '<path>', " Set current from config path (auto-registers)", '\n', ' ', "discover Find configs in default locations (use `limps config use ", '<name>', "` to register)", '\n', ' ', "migrate Pull known configs into limps/projects/ from old locations", '\n', '\n', "Run `limps config ", '<command>', " --help` for more information."] }));
6
+ const help = buildHelpOutput({
7
+ usage: 'limps config <command>',
8
+ sections: [
9
+ {
10
+ title: 'Commands',
11
+ lines: [
12
+ 'list Show all registered projects',
13
+ 'use <name> Set the current/default project',
14
+ 'show Display resolved configuration values',
15
+ 'scoring Show or update scoring configuration',
16
+ 'path Print the resolved config file path',
17
+ 'add <name> <path> Register an existing config file',
18
+ 'sync-mcp [project] [--projects <names>] [--client <claude|cursor|claude-code|codex|chatgpt|all>] [--global] [--path <path>] [--print] [-f] Add/update limps in MCP configs (default: local project config)',
19
+ 'update <name> [--plans-path <path>] [--docs-path <path>] Update project paths',
20
+ 'remove <name> Remove a project and delete config/dir (when under limps/projects)',
21
+ 'set <path> Set current from config path (auto-registers)',
22
+ 'discover Find configs in default locations (use `limps config use <name>` to register)',
23
+ 'migrate Pull known configs into limps/projects/ from old locations',
24
+ ],
25
+ },
26
+ {
27
+ title: 'Help',
28
+ lines: ['Run `limps config <command> --help` for more information.'],
29
+ },
30
+ ],
31
+ tips: [getProjectTipLine()],
32
+ llmHints: getProjectLlmHints(),
33
+ });
34
+ return _jsx(Text, { children: help.text });
6
35
  }
7
36
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/config/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAE3B,MAAM,CAAC,MAAM,WAAW,GAAG,8BAA8B,CAAC;AAE1D,MAAM,CAAC,OAAO,UAAU,aAAa;IACnC,OAAO,CACL,MAAC,IAAI,uCACkB,WAAW,EAC/B,IAAI,EACJ,IAAI,eACK,IAAI,EACb,IAAI,uCAAmC,IAAI,EAC3C,IAAI,UAAM,QAAQ,sCAAkC,IAAI,EACxD,IAAI,gDAA4C,IAAI,EACpD,IAAI,8CAA0C,IAAI,EAClD,IAAI,UAAM,QAAQ,OAAG,QAAQ,uCAAmC,IAAI,EACpE,IAAI,qCAAiC,SAAS,iBAAa,GAAG,EAC9D,+CAA+C,2BAAuB,QAAQ,sFACV,IAAI,EACxE,IAAI,aAAS,QAAQ,qBAAiB,QAAQ,qBAAiB,QAAQ,4BAClE,IAAI,EACT,IAAI,aAAS,QAAQ,yEACrB,IAAI,EACJ,IAAI,UAAM,QAAQ,oDAAgD,IAAI,EACtE,IAAI,wEAAoE,QAAQ,oBACvE,IAAI,EACb,IAAI,wEAAoE,IAAI,EAC5E,IAAI,wBACc,WAAW,sCACzB,CACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/config/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjG,MAAM,CAAC,MAAM,WAAW,GAAG,8BAA8B,CAAC;AAE1D,MAAM,CAAC,OAAO,UAAU,aAAa;IACnC,MAAM,IAAI,GAAG,eAAe,CAAC;QAC3B,KAAK,EAAE,wBAAwB;QAC/B,QAAQ,EAAE;YACR;gBACE,KAAK,EAAE,UAAU;gBACjB,KAAK,EAAE;oBACL,mCAAmC;oBACnC,4CAA4C;oBAC5C,4CAA4C;oBAC5C,8CAA8C;oBAC9C,0CAA0C;oBAC1C,oDAAoD;oBACpD,4MAA4M;oBAC5M,+EAA+E;oBAC/E,kFAAkF;oBAClF,0DAA0D;oBAC1D,wFAAwF;oBACxF,oEAAoE;iBACrE;aACF;YACD;gBACE,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,CAAC,2DAA2D,CAAC;aACrE;SACF;QACD,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC;QAC3B,QAAQ,EAAE,kBAAkB,EAAE;KAC/B,CAAC,CAAC;IAEH,OAAO,KAAC,IAAI,cAAE,IAAI,CAAC,IAAI,GAAQ,CAAC;AAClC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/config/list.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,WAAW,iCAAiC,CAAC;AAE1D,eAAO,MAAM,OAAO;;iBAElB,CAAC;AAEH,UAAU,KAAK;IACb,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CAQ7E"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/config/list.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,WAAW,iCAAiC,CAAC;AAE1D,eAAO,MAAM,OAAO;;iBAElB,CAAC;AAEH,UAAU,KAAK;IACb,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CAkB7E"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Text } from 'ink';
3
+ import { useEffect } from 'react';
3
4
  import { z } from 'zod';
4
5
  import { configList, getProjectsData } from '../../cli/config-cmd.js';
5
6
  import { handleJsonOutput, isJsonMode } from '../../cli/json-output.js';
@@ -8,9 +9,18 @@ export const options = z.object({
8
9
  json: z.boolean().optional().describe('Output as JSON'),
9
10
  });
10
11
  export default function ConfigListCommand({ options }) {
11
- // Handle JSON output mode
12
- if (isJsonMode(options)) {
13
- handleJsonOutput(() => getProjectsData(), 'CONFIG_LIST_ERROR');
12
+ const jsonMode = isJsonMode(options);
13
+ useEffect(() => {
14
+ if (jsonMode) {
15
+ const timer = setTimeout(() => {
16
+ handleJsonOutput(() => getProjectsData(), 'CONFIG_LIST_ERROR');
17
+ }, 0);
18
+ return () => clearTimeout(timer);
19
+ }
20
+ return undefined;
21
+ }, [jsonMode]);
22
+ if (jsonMode) {
23
+ return null;
14
24
  }
15
25
  const output = configList();
16
26
  return _jsx(Text, { children: output });
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/config/list.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAExE,MAAM,CAAC,MAAM,WAAW,GAAG,8BAA8B,CAAC;AAE1D,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;CACxD,CAAC,CAAC;AAMH,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EAAE,OAAO,EAAS;IAC1D,0BAA0B;IAC1B,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,gBAAgB,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,EAAE,mBAAmB,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,KAAC,IAAI,cAAE,MAAM,GAAQ,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/config/list.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAExE,MAAM,CAAC,MAAM,WAAW,GAAG,8BAA8B,CAAC;AAE1D,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;CACxD,CAAC,CAAC;AAMH,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EAAE,OAAO,EAAS;IAC1D,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACrC,SAAS,CAAC,GAA6B,EAAE;QACvC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,gBAAgB,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,EAAE,mBAAmB,CAAC,CAAC;YACjE,CAAC,EAAE,CAAC,CAAC,CAAC;YACN,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,KAAC,IAAI,cAAE,MAAM,GAAQ,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { z } from 'zod';
2
+ export declare const description = "Show or update scoring configuration";
3
+ export declare const options: z.ZodObject<{
4
+ preset: z.ZodOptional<z.ZodString>;
5
+ weight: z.ZodOptional<z.ZodString>;
6
+ bias: z.ZodOptional<z.ZodString>;
7
+ }, z.core.$strip>;
8
+ interface Props {
9
+ options: z.infer<typeof options>;
10
+ }
11
+ export default function ConfigScoringCommand({ options }: Props): React.ReactNode;
12
+ export {};
13
+ //# sourceMappingURL=scoring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoring.d.ts","sourceRoot":"","sources":["../../../src/commands/config/scoring.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,WAAW,yCAAyC,CAAC;AAElE,eAAO,MAAM,OAAO;;;;iBASlB,CAAC;AAEH,UAAU,KAAK;IACb,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC;AAsED,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CAuBhF"}
@@ -0,0 +1,104 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Text } from 'ink';
3
+ import { z } from 'zod';
4
+ import { configScoringShow, configScoringUpdate, } from '../../cli/config-cmd.js';
5
+ import { resolveConfigPath } from '../../utils/config-resolver.js';
6
+ export const description = 'Show or update scoring configuration';
7
+ export const options = z.object({
8
+ preset: z.string().optional().describe('Preset name'),
9
+ weight: z.string().optional().describe('Weight overrides: dependency=50,priority=20,workload=30'),
10
+ bias: z
11
+ .string()
12
+ .optional()
13
+ .describe('Bias overrides: plan:0027=10,persona:reviewer=-10,status:BLOCKED=20 (comma-separated)'),
14
+ });
15
+ const parseWeights = (input) => {
16
+ const weights = {};
17
+ const entries = input
18
+ .split(',')
19
+ .map((entry) => entry.trim())
20
+ .filter(Boolean);
21
+ for (const entry of entries) {
22
+ const [rawKey, rawValue] = entry.split('=');
23
+ if (!rawKey || rawValue === undefined) {
24
+ throw new Error(`Invalid weight format "${entry}". Use key=value pairs.`);
25
+ }
26
+ const key = rawKey.trim();
27
+ const value = Number(rawValue);
28
+ if (!Number.isFinite(value)) {
29
+ throw new Error(`Invalid weight value for "${key}": ${rawValue}`);
30
+ }
31
+ if (key !== 'dependency' && key !== 'priority' && key !== 'workload') {
32
+ throw new Error(`Unknown weight "${key}". Valid keys: dependency, priority, workload.`);
33
+ }
34
+ weights[key] = value;
35
+ }
36
+ return weights;
37
+ };
38
+ const parseBiases = (input) => {
39
+ const biases = {};
40
+ const entries = input
41
+ .split(',')
42
+ .map((entry) => entry.trim())
43
+ .filter(Boolean);
44
+ for (const entry of entries) {
45
+ const [rawKey, rawValue] = entry.split('=');
46
+ if (!rawKey || rawValue === undefined) {
47
+ throw new Error(`Invalid bias format "${entry}". Use type:name=value.`);
48
+ }
49
+ const value = Number(rawValue);
50
+ if (!Number.isFinite(value)) {
51
+ throw new Error(`Invalid bias value for "${rawKey}": ${rawValue}`);
52
+ }
53
+ const [rawType, rawName] = rawKey.split(':');
54
+ if (!rawType || !rawName) {
55
+ throw new Error(`Invalid bias key "${rawKey}". Use type:name.`);
56
+ }
57
+ const type = rawType.trim();
58
+ const name = rawName.trim();
59
+ if (type === 'plan') {
60
+ biases.plans = { ...(biases.plans ?? {}), [name]: value };
61
+ continue;
62
+ }
63
+ if (type === 'persona') {
64
+ if (!['coder', 'reviewer', 'pm', 'customer'].includes(name)) {
65
+ throw new Error(`Unknown persona "${name}".`);
66
+ }
67
+ biases.personas = { ...(biases.personas ?? {}), [name]: value };
68
+ continue;
69
+ }
70
+ if (type === 'status') {
71
+ if (!['GAP', 'WIP', 'BLOCKED'].includes(name)) {
72
+ throw new Error(`Unknown status "${name}".`);
73
+ }
74
+ biases.statuses = { ...(biases.statuses ?? {}), [name]: value };
75
+ continue;
76
+ }
77
+ throw new Error(`Unknown bias type "${type}". Use plan, persona, or status.`);
78
+ }
79
+ return biases;
80
+ };
81
+ export default function ConfigScoringCommand({ options }) {
82
+ if (!options.preset && !options.weight && !options.bias) {
83
+ const output = configScoringShow(() => resolveConfigPath());
84
+ return _jsx(Text, { children: output });
85
+ }
86
+ try {
87
+ const updateOptions = {};
88
+ if (options.preset) {
89
+ updateOptions.preset = options.preset;
90
+ }
91
+ if (options.weight) {
92
+ updateOptions.weights = parseWeights(options.weight);
93
+ }
94
+ if (options.bias) {
95
+ updateOptions.biases = parseBiases(options.bias);
96
+ }
97
+ const output = configScoringUpdate(() => resolveConfigPath(), updateOptions);
98
+ return _jsx(Text, { color: "green", children: output });
99
+ }
100
+ catch (error) {
101
+ return _jsxs(Text, { color: "red", children: ["Error: ", error.message] });
102
+ }
103
+ }
104
+ //# sourceMappingURL=scoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoring.js","sourceRoot":"","sources":["../../../src/commands/config/scoring.tsx"],"names":[],"mappings":"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"}
@@ -5,10 +5,10 @@ export declare const options: z.ZodObject<{
5
5
  projects: z.ZodOptional<z.ZodString>;
6
6
  client: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
7
7
  cursor: "cursor";
8
- all: "all";
9
8
  "claude-code": "claude-code";
10
9
  claude: "claude";
11
10
  codex: "codex";
11
+ all: "all";
12
12
  chatgpt: "chatgpt";
13
13
  }>>>;
14
14
  global: z.ZodOptional<z.ZodBoolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.tsx"],"names":[],"mappings":"AAMA,eAAO,MAAM,WAAW,0CAA0C,CAAC;AAEnE,MAAM,CAAC,OAAO,UAAU,cAAc,IAAI,KAAK,CAAC,SAAS,CA8CxD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.tsx"],"names":[],"mappings":"AAMA,eAAO,MAAM,WAAW,0CAA0C,CAAC;AAEnE,MAAM,CAAC,OAAO,UAAU,cAAc,IAAI,KAAK,CAAC,SAAS,CAkDxD"}
@@ -14,7 +14,7 @@ export default function DefaultCommand() {
14
14
  setShowWhatsNew(true);
15
15
  }
16
16
  }, [version]);
17
- const defaultContent = (_jsxs(Text, { children: [_jsx(Text, { color: "cyan", bold: true, children: "limps" }), ' ', _jsxs(Text, { color: "yellow", children: ["v", version] }), " - Local Intelligent MCP Planning Server", '\n', '\n', _jsx(Text, { color: "yellow", children: "Usage:" }), " limps ", '<command>', " [options]", '\n', '\n', _jsx(Text, { color: "cyan", children: "Commands:" }), '\n', ' ', "serve", ' ', "Start the MCP server", '\n', ' ', "init ", '<name> ', "Initialize a new project", '\n', ' ', "list-plans", ' ', "List all plans with status", '\n', ' ', "list-agents", ' ', "List agents in a plan", '\n', ' ', "next-task", ' ', "Get the next best task", '\n', ' ', "status", ' ', "Show plan progress", '\n', ' ', "version", ' ', "Show version information", '\n', ' ', "config", ' ', "Manage project configuration", '\n', '\n', "Run ", _jsxs(Text, { color: "green", children: ["limps ", '<command>'] }), " without args for usage help.", '\n', "Run ", _jsxs(Text, { color: "green", children: ["limps ", '<command>', " --help"] }), " for full documentation."] }));
17
+ const defaultContent = (_jsxs(Text, { children: [_jsx(Text, { color: "cyan", bold: true, children: "limps" }), ' ', _jsxs(Text, { color: "yellow", children: ["v", version] }), " - Local Intelligent MCP Planning Server", '\n', '\n', _jsx(Text, { color: "yellow", children: "Usage:" }), " limps ", '<command>', " [options]", '\n', '\n', _jsx(Text, { color: "cyan", children: "Commands:" }), '\n', ' ', "serve", ' ', "Start the MCP server", '\n', ' ', "init ", '<name> ', "Initialize a new project", '\n', ' ', "list-plans", ' ', "List all plans with status", '\n', ' ', "list-agents", ' ', "List agents in a plan", '\n', ' ', "next-task", ' ', "Get the next best task", '\n', ' ', "score-task", ' ', "Show scoring for a task", '\n', ' ', "score-all", ' ', "Compare scores across tasks", '\n', ' ', "reindex", ' ', "Rebuild the document index", '\n', ' ', "repair-plans", ' ', "Repair plan frontmatter", '\n', ' ', "status", ' ', "Show plan progress", '\n', ' ', "version", ' ', "Show version information", '\n', ' ', "config", ' ', "Manage project configuration", '\n', '\n', "Run ", _jsxs(Text, { color: "green", children: ["limps ", '<command>'] }), " without args for usage help.", '\n', "Run ", _jsxs(Text, { color: "green", children: ["limps ", '<command>', " --help"] }), " for full documentation."] }));
18
18
  if (showWhatsNew) {
19
19
  return (_jsxs(Box, { flexDirection: "column", children: [_jsx(WhatsNew, { version: version, onDismiss: () => setShowWhatsNew(false) }), defaultContent] }));
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,MAAM,CAAC,MAAM,WAAW,GAAG,uCAAuC,CAAC;AAEnE,MAAM,CAAC,OAAO,UAAU,cAAc;IACpC,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExD,SAAS,CAAC,GAAG,EAAE;QACb,8CAA8C;QAC9C,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,eAAe,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,cAAc,GAAG,CACrB,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,4BAEhB,EAAC,GAAG,EACX,MAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,kBAAG,OAAO,IAAQ,8CAAyC,IAAI,EAClF,IAAI,EACL,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,uBAAc,aAAQ,WAAW,gBAAY,IAAI,EACpE,IAAI,EACL,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,0BAAiB,EAClC,IAAI,EACJ,IAAI,WAAO,WAAW,0BAAsB,IAAI,EAChD,IAAI,WAAO,WAAW,8BAA0B,IAAI,EACpD,IAAI,gBAAY,MAAM,gCAA4B,IAAI,EACtD,IAAI,iBAAa,KAAK,2BAAuB,IAAI,EACjD,IAAI,eAAW,OAAO,4BAAwB,IAAI,EAClD,IAAI,YAAQ,UAAU,wBAAoB,IAAI,EAC9C,IAAI,aAAS,UAAU,8BAA0B,IAAI,EACrD,IAAI,YAAQ,UAAU,kCAA8B,IAAI,EACxD,IAAI,UACD,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,uBAAQ,WAAW,IAAQ,mCAA8B,IAAI,UAChF,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,uBAAQ,WAAW,eAAe,gCACpD,CACR,CAAC;IAEF,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,QAAQ,IAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,GAAI,EACtE,cAAc,IACX,CACP,CAAC;IACJ,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,MAAM,CAAC,MAAM,WAAW,GAAG,uCAAuC,CAAC;AAEnE,MAAM,CAAC,OAAO,UAAU,cAAc;IACpC,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExD,SAAS,CAAC,GAAG,EAAE;QACb,8CAA8C;QAC9C,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,eAAe,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,cAAc,GAAG,CACrB,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,4BAEhB,EAAC,GAAG,EACX,MAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,kBAAG,OAAO,IAAQ,8CAAyC,IAAI,EAClF,IAAI,EACL,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,uBAAc,aAAQ,WAAW,gBAAY,IAAI,EACpE,IAAI,EACL,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,0BAAiB,EAClC,IAAI,EACJ,IAAI,WAAO,WAAW,0BAAsB,IAAI,EAChD,IAAI,WAAO,WAAW,8BAA0B,IAAI,EACpD,IAAI,gBAAY,MAAM,gCAA4B,IAAI,EACtD,IAAI,iBAAa,KAAK,2BAAuB,IAAI,EACjD,IAAI,eAAW,OAAO,4BAAwB,IAAI,EAClD,IAAI,gBAAY,MAAM,6BAAyB,IAAI,EACnD,IAAI,eAAW,OAAO,iCAA6B,IAAI,EACvD,IAAI,aAAS,SAAS,gCAA4B,IAAI,EACtD,IAAI,kBAAc,IAAI,6BAAyB,IAAI,EACnD,IAAI,YAAQ,UAAU,wBAAoB,IAAI,EAC9C,IAAI,aAAS,UAAU,8BAA0B,IAAI,EACrD,IAAI,YAAQ,UAAU,kCAA8B,IAAI,EACxD,IAAI,UACD,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,uBAAQ,WAAW,IAAQ,mCAA8B,IAAI,UAChF,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,uBAAQ,WAAW,eAAe,gCACpD,CACR,CAAC;IAEF,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,QAAQ,IAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,GAAI,EACtE,cAAc,IACX,CACP,CAAC;IACJ,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC"}
@@ -3,6 +3,7 @@ export declare const description = "List agents in a plan";
3
3
  export declare const args: z.ZodTuple<[z.ZodOptional<z.ZodString>], null>;
4
4
  export declare const options: z.ZodObject<{
5
5
  config: z.ZodOptional<z.ZodString>;
6
+ project: z.ZodOptional<z.ZodString>;
6
7
  json: z.ZodOptional<z.ZodBoolean>;
7
8
  }, z.core.$strip>;
8
9
  interface Props {
@@ -1 +1 @@
1
- {"version":3,"file":"list-agents.d.ts","sourceRoot":"","sources":["../../src/commands/list-agents.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,WAAW,0BAA0B,CAAC;AAEnD,eAAO,MAAM,IAAI,gDAA+D,CAAC;AAEjF,eAAO,MAAM,OAAO;;;iBAGlB,CAAC;AAEH,UAAU,KAAK;IACb,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CAiEnF"}
1
+ {"version":3,"file":"list-agents.d.ts","sourceRoot":"","sources":["../../src/commands/list-agents.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,WAAW,0BAA0B,CAAC;AAEnD,eAAO,MAAM,IAAI,gDAA+D,CAAC;AAEjF,eAAO,MAAM,OAAO;;;;iBAIlB,CAAC;AAEH,UAAU,KAAK;IACb,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CAqFnF"}
@@ -1,39 +1,78 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Text } from 'ink';
3
+ import { useEffect } from 'react';
3
4
  import { z } from 'zod';
4
5
  import { getAgentsData } from '../cli/list-agents.js';
5
6
  import { loadConfig } from '../config.js';
6
- import { resolveConfigPath } from '../utils/config-resolver.js';
7
+ import { resolveConfigPath, resolveProjectConfigPath } from '../utils/config-resolver.js';
8
+ import { buildHelpOutput, getProjectLlmHints, getProjectTipLine } from '../utils/cli-help.js';
7
9
  import { AgentsList } from '../components/AgentsList.js';
8
10
  import { handleJsonOutput, isJsonMode, outputJson, wrapError } from '../cli/json-output.js';
9
11
  export const description = 'List agents in a plan';
10
12
  export const args = z.tuple([z.string().describe('plan id or name').optional()]);
11
13
  export const options = z.object({
12
14
  config: z.string().optional().describe('Path to config file'),
15
+ project: z.string().optional().describe('Registered project name'),
13
16
  json: z.boolean().optional().describe('Output as JSON'),
14
17
  });
15
18
  export default function ListAgentsCommand({ args, options }) {
16
19
  const [planId] = args;
17
- // Handle JSON output mode - must check before usage validation
18
- if (isJsonMode(options)) {
19
- if (!planId) {
20
- return outputJson(wrapError('Plan ID is required', { code: 'MISSING_PLAN_ID' }), 1);
20
+ const help = buildHelpOutput({
21
+ usage: 'limps list-agents <plan> [options]',
22
+ arguments: ['plan Plan ID or name (e.g., "4" or "0004-feature-name")'],
23
+ options: [
24
+ '--config Path to config file',
25
+ '--project Registered project name',
26
+ '--json Output as JSON',
27
+ ],
28
+ examples: [
29
+ 'limps list-agents 4',
30
+ 'limps list-agents 0004-my-feature',
31
+ 'limps list-agents 4 --json',
32
+ ],
33
+ tips: [getProjectTipLine()],
34
+ llmHints: getProjectLlmHints(),
35
+ });
36
+ const jsonMode = isJsonMode(options);
37
+ useEffect(() => {
38
+ if (!jsonMode) {
39
+ return;
21
40
  }
22
- const configPath = resolveConfigPath(options.config);
23
- const config = loadConfig(configPath);
24
- return handleJsonOutput(() => {
25
- const result = getAgentsData(config, planId);
26
- if ('error' in result) {
27
- throw new Error(result.error);
41
+ const timer = setTimeout(() => {
42
+ try {
43
+ if (!planId) {
44
+ outputJson(wrapError('Plan ID is required', { code: 'MISSING_PLAN_ID', help: help.meta }), 1);
45
+ }
46
+ const configPath = options.project
47
+ ? resolveProjectConfigPath(options.project)
48
+ : resolveConfigPath(options.config);
49
+ const config = loadConfig(configPath);
50
+ handleJsonOutput(() => {
51
+ const result = getAgentsData(config, planId);
52
+ if ('error' in result) {
53
+ throw new Error(result.error);
54
+ }
55
+ return result;
56
+ }, 'LIST_AGENTS_ERROR');
57
+ }
58
+ catch (error) {
59
+ outputJson(wrapError(error instanceof Error ? error.message : String(error), {
60
+ code: 'LIST_AGENTS_ERROR',
61
+ }), 1);
28
62
  }
29
- return result;
30
- }, 'LIST_AGENTS_ERROR');
63
+ }, 0);
64
+ return () => clearTimeout(timer);
65
+ }, [help.meta, jsonMode, options.config, options.project, planId]);
66
+ if (jsonMode) {
67
+ return null;
31
68
  }
32
69
  if (!planId) {
33
- return (_jsxs(Text, { children: [_jsx(Text, { color: "yellow", children: "Usage:" }), " limps list-agents ", '<plan>', " [options]", '\n\n', _jsx(Text, { color: "cyan", children: "Arguments:" }), '\n', ' ', "plan Plan ID or name (e.g., \"4\" or \"0004-feature-name\")", '\n\n', _jsx(Text, { color: "cyan", children: "Options:" }), '\n', ' ', "--config Path to config file", '\n', ' ', "--json Output as JSON", '\n\n', _jsx(Text, { color: "cyan", children: "Examples:" }), '\n', ' ', "limps list-agents 4", '\n', ' ', "limps list-agents 0004-my-feature", '\n', ' ', "limps list-agents 4 --json"] }));
70
+ return _jsx(Text, { children: help.text });
34
71
  }
35
72
  try {
36
- const configPath = resolveConfigPath(options.config);
73
+ const configPath = options.project
74
+ ? resolveProjectConfigPath(options.project)
75
+ : resolveConfigPath(options.config);
37
76
  const config = loadConfig(configPath);
38
77
  const result = getAgentsData(config, planId);
39
78
  if ('error' in result) {
@@ -1 +1 @@
1
- {"version":3,"file":"list-agents.js","sourceRoot":"","sources":["../../src/commands/list-agents.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list-agents.js","sourceRoot":"","sources":["../../src/commands/list-agents.tsx"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { z } from 'zod';
2
2
  export declare const description = "List all plans";
3
3
  export declare const options: z.ZodObject<{
4
4
  config: z.ZodOptional<z.ZodString>;
5
+ project: z.ZodOptional<z.ZodString>;
5
6
  json: z.ZodOptional<z.ZodBoolean>;
6
7
  }, z.core.$strip>;
7
8
  interface Props {
@@ -1 +1 @@
1
- {"version":3,"file":"list-plans.d.ts","sourceRoot":"","sources":["../../src/commands/list-plans.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,WAAW,mBAAmB,CAAC;AAE5C,eAAO,MAAM,OAAO;;;iBAGlB,CAAC;AAEH,UAAU,KAAK;IACb,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CAuB5E"}
1
+ {"version":3,"file":"list-plans.d.ts","sourceRoot":"","sources":["../../src/commands/list-plans.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,WAAW,mBAAmB,CAAC;AAE5C,eAAO,MAAM,OAAO;;;;iBAIlB,CAAC;AAEH,UAAU,KAAK;IACb,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CAqD5E"}
@@ -1,34 +1,59 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Text } from 'ink';
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import { useEffect } from 'react';
3
4
  import { z } from 'zod';
4
5
  import { getPlansData } from '../cli/list-plans.js';
5
6
  import { loadConfig } from '../config.js';
6
- import { resolveConfigPath } from '../utils/config-resolver.js';
7
+ import { resolveConfigPath, resolveProjectConfigPath } from '../utils/config-resolver.js';
7
8
  import { PlansList } from '../components/PlansList.js';
8
- import { handleJsonOutput, isJsonMode } from '../cli/json-output.js';
9
+ import { getProjectTipLine } from '../utils/cli-help.js';
10
+ import { handleJsonOutput, isJsonMode, outputJson, wrapError } from '../cli/json-output.js';
9
11
  export const description = 'List all plans';
10
12
  export const options = z.object({
11
13
  config: z.string().optional().describe('Path to config file'),
14
+ project: z.string().optional().describe('Registered project name'),
12
15
  json: z.boolean().optional().describe('Output as JSON'),
13
16
  });
14
17
  export default function ListPlansCommand({ options }) {
15
- const configPath = resolveConfigPath(options.config);
16
- const config = loadConfig(configPath);
17
- // Handle JSON output mode - bypass Ink rendering entirely
18
- if (isJsonMode(options)) {
19
- handleJsonOutput(() => {
20
- const result = getPlansData(config);
21
- if ('error' in result) {
22
- throw new Error(result.error);
23
- }
24
- return result;
25
- }, 'LIST_PLANS_ERROR');
18
+ const jsonMode = isJsonMode(options);
19
+ useEffect(() => {
20
+ if (jsonMode) {
21
+ const timer = setTimeout(() => {
22
+ try {
23
+ const configPath = options.project
24
+ ? resolveProjectConfigPath(options.project)
25
+ : resolveConfigPath(options.config);
26
+ const config = loadConfig(configPath);
27
+ handleJsonOutput(() => {
28
+ const result = getPlansData(config);
29
+ if ('error' in result) {
30
+ throw new Error(result.error);
31
+ }
32
+ return result;
33
+ }, 'LIST_PLANS_ERROR');
34
+ }
35
+ catch (error) {
36
+ outputJson(wrapError(error instanceof Error ? error.message : String(error), {
37
+ code: 'LIST_PLANS_ERROR',
38
+ }), 1);
39
+ }
40
+ }, 0);
41
+ return () => clearTimeout(timer);
42
+ }
43
+ return undefined;
44
+ }, [jsonMode, options.config, options.project]);
45
+ if (jsonMode) {
46
+ return null;
26
47
  }
48
+ const configPath = options.project
49
+ ? resolveProjectConfigPath(options.project)
50
+ : resolveConfigPath(options.config);
51
+ const config = loadConfig(configPath);
27
52
  // Normal Ink rendering
28
53
  const result = getPlansData(config);
29
54
  if ('error' in result) {
30
55
  return _jsx(Text, { color: "red", children: result.error });
31
56
  }
32
- return _jsx(PlansList, { plans: result.plans, total: result.total });
57
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(PlansList, { plans: result.plans, total: result.total }), _jsx(Text, { children: getProjectTipLine() })] }));
33
58
  }
34
59
  //# sourceMappingURL=list-plans.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-plans.js","sourceRoot":"","sources":["../../src/commands/list-plans.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAErE,MAAM,CAAC,MAAM,WAAW,GAAG,gBAAgB,CAAC;AAE5C,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC7D,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;CACxD,CAAC,CAAC;AAMH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EAAE,OAAO,EAAS;IACzD,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAEtC,0DAA0D;IAC1D,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,gBAAgB,CAAC,GAAG,EAAE;YACpB,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACzB,CAAC;IAED,uBAAuB;IACvB,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAEpC,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;QACtB,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,YAAE,MAAM,CAAC,KAAK,GAAQ,CAAC;IACjD,CAAC;IAED,OAAO,KAAC,SAAS,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,GAAI,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"list-plans.js","sourceRoot":"","sources":["../../src/commands/list-plans.tsx"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ export declare const description = "Get the next best task";
3
3
  export declare const args: z.ZodTuple<[z.ZodOptional<z.ZodString>], null>;
4
4
  export declare const options: z.ZodObject<{
5
5
  config: z.ZodOptional<z.ZodString>;
6
+ project: z.ZodOptional<z.ZodString>;
6
7
  json: z.ZodOptional<z.ZodBoolean>;
7
8
  }, z.core.$strip>;
8
9
  interface Props {
@@ -1 +1 @@
1
- {"version":3,"file":"next-task.d.ts","sourceRoot":"","sources":["../../src/commands/next-task.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,WAAW,2BAA2B,CAAC;AAEpD,eAAO,MAAM,IAAI,gDAA+D,CAAC;AAEjF,eAAO,MAAM,OAAO;;;iBAGlB,CAAC;AAEH,UAAU,KAAK;IACb,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CA6FjF"}
1
+ {"version":3,"file":"next-task.d.ts","sourceRoot":"","sources":["../../src/commands/next-task.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,WAAW,2BAA2B,CAAC;AAEpD,eAAO,MAAM,IAAI,gDAA+D,CAAC;AAEjF,eAAO,MAAM,OAAO;;;;iBAIlB,CAAC;AAEH,UAAU,KAAK;IACb,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CAuGjF"}