@hiroleague/taskmanager 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/assets/index-BpzHnKdP.css +1 -0
- package/dist/assets/index-DmNErTAP.js +273 -0
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/skills/hiro-task-manager-cli/SKILL.md +6 -4
- package/skills/hiro-task-manager-cli/reference/cli-access-policy.md +1 -0
- package/skills/hiro-task-manager-cli/reference/releases.md +14 -0
- package/src/cli/commands/query.ts +56 -56
- package/src/cli/commands/releases.ts +22 -0
- package/src/cli/handlers/boards.test.ts +669 -669
- package/src/cli/handlers/cli-wiring.test.ts +38 -1
- package/src/cli/handlers/releases.ts +15 -0
- package/src/cli/handlers/search.test.ts +374 -374
- package/src/cli/handlers/search.ts +17 -17
- package/src/cli/lib/cli-http-errors.test.ts +85 -85
- package/src/cli/lib/write/releases.ts +64 -1
- package/src/cli/lib/write-result.test.ts +3 -0
- package/src/cli/lib/write-result.ts +3 -0
- package/src/cli/lib/writeCommands.breadth.test.ts +143 -0
- package/src/cli/lib/writeCommands.ts +1 -0
- package/src/cli/subprocess.real-stack.test.ts +625 -611
- package/src/cli/subprocess.smoke.test.ts +954 -954
- package/src/client/api/useBoardChangeStream.ts +421 -168
- package/src/client/api/useBoardIndexStream.ts +35 -0
- package/src/client/components/board/BoardStatsChips.tsx +233 -233
- package/src/client/components/board/BoardStatsContext.tsx +41 -41
- package/src/client/components/board/boardHeaderButtonStyles.ts +38 -38
- package/src/client/components/board/shortcuts/useBoardShortcutKeydown.ts +49 -49
- package/src/client/components/board/useBoardCanvasPanScroll.ts +108 -108
- package/src/client/components/board/useBoardTaskContainerDroppableReact.ts +33 -33
- package/src/client/components/board/useBoardTaskSortableReact.ts +26 -26
- package/src/client/components/layout/AppShell.tsx +5 -2
- package/src/client/components/layout/NotificationToasts.tsx +38 -1
- package/src/client/components/multi-select.tsx +1206 -1206
- package/src/client/components/routing/BoardPage.tsx +20 -20
- package/src/client/components/routing/NavigationRegistrar.tsx +13 -13
- package/src/client/components/task/TaskCard.tsx +643 -643
- package/src/client/components/ui/badge.tsx +49 -49
- package/src/client/components/ui/button.tsx +65 -65
- package/src/client/components/ui/command.tsx +193 -193
- package/src/client/components/ui/dialog.tsx +163 -163
- package/src/client/components/ui/input-group.tsx +155 -155
- package/src/client/components/ui/input.tsx +19 -19
- package/src/client/components/ui/popover.tsx +87 -87
- package/src/client/components/ui/separator.tsx +28 -28
- package/src/client/components/ui/textarea.tsx +18 -18
- package/src/client/index.css +248 -248
- package/src/client/lib/appNavigate.ts +16 -16
- package/src/client/lib/taskCardDate.ts +111 -111
- package/src/client/lib/utils.ts +6 -6
- package/src/client/store/notificationUi.ts +14 -0
- package/src/server/auth.ts +351 -351
- package/src/server/events.ts +31 -4
- package/src/server/migrations/registry.ts +43 -43
- package/src/server/notificationEvents.ts +8 -1
- package/src/server/routes/boards.ts +15 -1
- package/src/server/routes/trash.ts +6 -1
- package/src/shared/boardEvents.ts +6 -0
- package/src/shared/runtimeConfig.ts +256 -256
- package/dist/assets/index-hMFTu7sr.css +0 -1
- package/dist/assets/index-oKG1C41_.js +0 -273
package/dist/index.html
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
} catch (e) {}
|
|
26
26
|
})();
|
|
27
27
|
</script>
|
|
28
|
-
<script type="module" crossorigin src="/assets/index-
|
|
28
|
+
<script type="module" crossorigin src="/assets/index-DmNErTAP.js"></script>
|
|
29
29
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CFjPhJqf.js">
|
|
30
30
|
<link rel="modulepreload" crossorigin href="/assets/src-C47h8eAM.js">
|
|
31
31
|
<link rel="modulepreload" crossorigin href="/assets/chunk-ICPOFSXX-DkUVjrLw.js">
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
<link rel="modulepreload" crossorigin href="/assets/chunk-336JU56O-BGQvSwLk.js">
|
|
47
47
|
<link rel="modulepreload" crossorigin href="/assets/chunk-426QAEUC-Cl9nQN9c.js">
|
|
48
48
|
<link rel="modulepreload" crossorigin href="/assets/chunk-XPW4576I-DQpNCogT.js">
|
|
49
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
49
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BpzHnKdP.css">
|
|
50
50
|
</head>
|
|
51
51
|
<body>
|
|
52
52
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -39,7 +39,9 @@ If you are not sure, use a generic name "AI Agent"
|
|
|
39
39
|
|
|
40
40
|
## Installation
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
The `hirotm` binary ships with the **`@hiroleague/taskmanager`** npm package ([npm](https://www.npmjs.com/package/@hiroleague/taskmanager), [source](https://github.com/hiro-league/hirotaskmanager)).
|
|
43
|
+
|
|
44
|
+
If the command is not found, ask the user to [install](https://docs.hiroleague.com/task-manager/get-started/quickstart) it and configure it.
|
|
43
45
|
|
|
44
46
|
# Discovery
|
|
45
47
|
|
|
@@ -70,12 +72,12 @@ If you are not allowed to access an entity or perform an operation due to CLI Ac
|
|
|
70
72
|
|
|
71
73
|
## References
|
|
72
74
|
|
|
73
|
-
- [Installation Guide](https://docs.hiroleague.com/task-manager/get-started/
|
|
75
|
+
- [Installation Guide](https://docs.hiroleague.com/task-manager/get-started/quickstart)
|
|
74
76
|
- Server Commands - Start, stop, and check the server status.
|
|
75
77
|
- [Boards Commands](reference/boards.md) - Create, update, delete, list, describe, and configure boards.
|
|
76
78
|
- [Lists Commands](reference/lists.md) - List, add, update, move, delete, restore, and purge board lists.
|
|
77
79
|
- [Tasks Commands](reference/tasks.md) - List, add, update, move, delete, restore, and purge tasks.
|
|
78
|
-
- [Releases Commands](reference/releases.md) - List, show, add, update, and
|
|
80
|
+
- [Releases Commands](reference/releases.md) - List, show, add, update, delete, and set-default releases.
|
|
79
81
|
- [Trash Commands](reference/trash.md) - Inspect trashed boards, lists, and tasks.
|
|
80
82
|
- [Status Commands](reference/statuses.md) - List workflow statuses and their meanings.
|
|
81
83
|
- [Search Commands](reference/search.md) - Full-text task search with `query search`.
|
|
@@ -94,4 +96,4 @@ If you are not allowed to access an entity or perform an operation due to CLI Ac
|
|
|
94
96
|
|
|
95
97
|
**References**
|
|
96
98
|
|
|
97
|
-
- [Online Documentation](https://docs.hiroleague.com/task-manager/get-started/
|
|
99
|
+
- [Online Documentation](https://docs.hiroleague.com/task-manager/get-started/quickstart)
|
|
@@ -54,6 +54,7 @@ Use this page to map `hirotm` commands to the board CLI policy checks enforced b
|
|
|
54
54
|
- `releases add`: `readBoard` + `manageStructure`
|
|
55
55
|
- `releases update`: `readBoard` + `manageStructure`
|
|
56
56
|
- `releases delete`: `readBoard` + `manageStructure`
|
|
57
|
+
- `releases set-default`: `readBoard` + `manageStructure`
|
|
57
58
|
|
|
58
59
|
### Search and trash
|
|
59
60
|
|
|
@@ -85,3 +85,17 @@ Delete a release from a board.
|
|
|
85
85
|
|
|
86
86
|
- `--move-tasks-to <id>`: move tagged tasks to another release before deletion.
|
|
87
87
|
- If omitted, tasks on that release become untagged.
|
|
88
|
+
|
|
89
|
+
### `releases set-default`
|
|
90
|
+
|
|
91
|
+
Format:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
hirotm releases set-default --board <id-or-slug> <release-id>
|
|
95
|
+
hirotm releases set-default --board <id-or-slug> --clear
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Set or clear the board’s default release (the release used for new tasks when the board’s auto-assign rules apply). This PATCHes the board (`defaultReleaseId`); requires `manageStructure` on the board for CLI clients.
|
|
99
|
+
|
|
100
|
+
- Provide `<release-id>` to set the default, or `--clear` to remove it.
|
|
101
|
+
- Do not pass `<release-id>` together with `--clear`.
|
|
@@ -1,56 +1,56 @@
|
|
|
1
|
-
import { Command } from "commander";
|
|
2
|
-
import type { CliContext } from "../types/context";
|
|
3
|
-
import { handleSearch } from "../handlers/search";
|
|
4
|
-
import {
|
|
5
|
-
addClientNameOption,
|
|
6
|
-
CLI_FIELDS_OPTION_DESC,
|
|
7
|
-
cliAction,
|
|
8
|
-
} from "../lib/command-helpers";
|
|
9
|
-
import { CLI_DEFAULTS } from "../lib/constants";
|
|
10
|
-
|
|
11
|
-
export function registerQueryCommands(
|
|
12
|
-
program: Command,
|
|
13
|
-
ctx: CliContext,
|
|
14
|
-
): void {
|
|
15
|
-
const query = program
|
|
16
|
-
.command("query")
|
|
17
|
-
.description("Read-only queries across boards (search, etc.)");
|
|
18
|
-
|
|
19
|
-
addClientNameOption(
|
|
20
|
-
query
|
|
21
|
-
.command("search")
|
|
22
|
-
.description(
|
|
23
|
-
"Search tasks (title, body, list name, group & status labels) via FTS5",
|
|
24
|
-
)
|
|
25
|
-
.argument("<query...>", "Search query (quote phrases with spaces)")
|
|
26
|
-
.option("--board <id-or-slug>", "Limit results to one board")
|
|
27
|
-
.option(
|
|
28
|
-
"--limit <n>",
|
|
29
|
-
`Page size (default ${CLI_DEFAULTS.DEFAULT_SEARCH_LIMIT}, max ${CLI_DEFAULTS.MAX_PAGE_LIMIT})`,
|
|
30
|
-
)
|
|
31
|
-
.option("--offset <n>", "Skip this many hits (default 0)")
|
|
32
|
-
.option(
|
|
33
|
-
"--page-all",
|
|
34
|
-
"Fetch every page at the current --limit and merge into one result set",
|
|
35
|
-
)
|
|
36
|
-
.option(
|
|
37
|
-
"--no-prefix",
|
|
38
|
-
"Do not add * to the last token (exact token only). Default matches prefixes (drag finds dragging); this flag does not",
|
|
39
|
-
)
|
|
40
|
-
.option("--fields <keys>", CLI_FIELDS_OPTION_DESC),
|
|
41
|
-
).action(
|
|
42
|
-
cliAction(
|
|
43
|
-
(
|
|
44
|
-
queryParts: string[],
|
|
45
|
-
options: {
|
|
46
|
-
board?: string;
|
|
47
|
-
limit?: string;
|
|
48
|
-
offset?: string;
|
|
49
|
-
pageAll?: boolean;
|
|
50
|
-
noPrefix?: boolean;
|
|
51
|
-
fields?: string;
|
|
52
|
-
},
|
|
53
|
-
) => handleSearch(ctx, queryParts, options),
|
|
54
|
-
),
|
|
55
|
-
);
|
|
56
|
-
}
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import type { CliContext } from "../types/context";
|
|
3
|
+
import { handleSearch } from "../handlers/search";
|
|
4
|
+
import {
|
|
5
|
+
addClientNameOption,
|
|
6
|
+
CLI_FIELDS_OPTION_DESC,
|
|
7
|
+
cliAction,
|
|
8
|
+
} from "../lib/command-helpers";
|
|
9
|
+
import { CLI_DEFAULTS } from "../lib/constants";
|
|
10
|
+
|
|
11
|
+
export function registerQueryCommands(
|
|
12
|
+
program: Command,
|
|
13
|
+
ctx: CliContext,
|
|
14
|
+
): void {
|
|
15
|
+
const query = program
|
|
16
|
+
.command("query")
|
|
17
|
+
.description("Read-only queries across boards (search, etc.)");
|
|
18
|
+
|
|
19
|
+
addClientNameOption(
|
|
20
|
+
query
|
|
21
|
+
.command("search")
|
|
22
|
+
.description(
|
|
23
|
+
"Search tasks (title, body, list name, group & status labels) via FTS5",
|
|
24
|
+
)
|
|
25
|
+
.argument("<query...>", "Search query (quote phrases with spaces)")
|
|
26
|
+
.option("--board <id-or-slug>", "Limit results to one board")
|
|
27
|
+
.option(
|
|
28
|
+
"--limit <n>",
|
|
29
|
+
`Page size (default ${CLI_DEFAULTS.DEFAULT_SEARCH_LIMIT}, max ${CLI_DEFAULTS.MAX_PAGE_LIMIT})`,
|
|
30
|
+
)
|
|
31
|
+
.option("--offset <n>", "Skip this many hits (default 0)")
|
|
32
|
+
.option(
|
|
33
|
+
"--page-all",
|
|
34
|
+
"Fetch every page at the current --limit and merge into one result set",
|
|
35
|
+
)
|
|
36
|
+
.option(
|
|
37
|
+
"--no-prefix",
|
|
38
|
+
"Do not add * to the last token (exact token only). Default matches prefixes (drag finds dragging); this flag does not",
|
|
39
|
+
)
|
|
40
|
+
.option("--fields <keys>", CLI_FIELDS_OPTION_DESC),
|
|
41
|
+
).action(
|
|
42
|
+
cliAction(
|
|
43
|
+
(
|
|
44
|
+
queryParts: string[],
|
|
45
|
+
options: {
|
|
46
|
+
board?: string;
|
|
47
|
+
limit?: string;
|
|
48
|
+
offset?: string;
|
|
49
|
+
pageAll?: boolean;
|
|
50
|
+
noPrefix?: boolean;
|
|
51
|
+
fields?: string;
|
|
52
|
+
},
|
|
53
|
+
) => handleSearch(ctx, queryParts, options),
|
|
54
|
+
),
|
|
55
|
+
);
|
|
56
|
+
}
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
handleReleasesAdd,
|
|
5
5
|
handleReleasesDelete,
|
|
6
6
|
handleReleasesList,
|
|
7
|
+
handleReleasesSetDefault,
|
|
7
8
|
handleReleasesShow,
|
|
8
9
|
handleReleasesUpdate,
|
|
9
10
|
} from "../handlers/releases";
|
|
@@ -84,6 +85,27 @@ export function registerReleaseCommands(
|
|
|
84
85
|
}) => handleReleasesAdd(ctx, options)),
|
|
85
86
|
);
|
|
86
87
|
|
|
88
|
+
addClientNameOption(
|
|
89
|
+
releasesCommand
|
|
90
|
+
.command("set-default")
|
|
91
|
+
.description(
|
|
92
|
+
"Set or clear the board default release (PATCH board; requires manageStructure)",
|
|
93
|
+
)
|
|
94
|
+
.requiredOption("--board <id-or-slug>", "Board id or slug")
|
|
95
|
+
.option("--clear", "Clear the board default release")
|
|
96
|
+
.argument(
|
|
97
|
+
"[release-id]",
|
|
98
|
+
"Numeric release id to use as default (omit when using --clear)",
|
|
99
|
+
),
|
|
100
|
+
).action(
|
|
101
|
+
cliAction(
|
|
102
|
+
(
|
|
103
|
+
releaseId: string | undefined,
|
|
104
|
+
options: { board: string; clear?: boolean },
|
|
105
|
+
) => handleReleasesSetDefault(ctx, releaseId, options),
|
|
106
|
+
),
|
|
107
|
+
);
|
|
108
|
+
|
|
87
109
|
addClientNameOption(
|
|
88
110
|
releasesCommand
|
|
89
111
|
.command("update")
|