@delorenj/pjangler 1.2.33 → 1.3.7
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 +72 -0
- package/dist/index.js +4754 -2564
- package/dist/mcp-server.js +4516 -2141
- package/dist/prompt.js +404 -0
- package/package.json +7 -5
- package/templates/commonproject/copier.yml +6 -1
- package/templates/commonproject/template/.agents/hooks/README.md +10 -10
- package/templates/commonproject/template/.agents/hooks/hooks.master.json +1 -1
- package/templates/commonproject/template/.agents/hooks/sync.py +4 -4
- package/templates/commonproject/template/.agents/local.example.json +1 -1
- package/templates/commonproject/template/.mise/scripts/hindsight-setup.sh +1 -1
- package/templates/commonproject/template/.mise/scripts/provision-packs.py +14 -50
- package/templates/commonproject/template/mise.toml.jinja +11 -11
- package/templates/hermes-agent/copier.yml +34 -14
- package/templates/hermes-agent/template/.runtime-scaffold/.gitignore.jinja +44 -0
- package/templates/hermes-agent/template/.runtime-scaffold/README.md +11 -10
- package/templates/hermes-agent/template/.scripts/01-config.sh +13 -4
- package/templates/hermes-agent/template/.scripts/05-fleet-env.sh +18 -28
- package/templates/hermes-agent/template/.scripts/10-hermes-profile.sh +73 -14
- package/templates/hermes-agent/template/.scripts/20-runtime-repo.sh +37 -32
- package/templates/hermes-agent/template/.scripts/30-telegram.sh +18 -4
- package/templates/hermes-agent/template/.scripts/42-ticket-provider.sh +18 -1
- package/templates/hermes-agent/template/.scripts/70-systemd.sh +114 -24
- package/templates/hermes-agent/template/.scripts/80-registry.sh +19 -3
- package/templates/hermes-agent/template/.scripts/_lib.sh +74 -11
- package/templates/hermes-agent/template/.scripts/checkpoint.sh +29 -1
- package/templates/hermes-agent/template/.scripts/config.example.toml +7 -4
- package/templates/hermes-agent/template/.scripts/credential-launch.sh +81 -0
- package/templates/hermes-agent/template/.scripts/heartbeat.sh +15 -2
- package/templates/hermes-agent/template/.scripts/lib/fleet-env.sh +202 -0
- package/templates/hermes-agent/template/.scripts/lib/parse-fleet-env.py +734 -0
- package/templates/hermes-agent/template/.scripts/lifecycle.sh +126 -0
- package/templates/hermes-agent/template/.scripts/providers/plane.sh +31 -5
- package/templates/hermes-agent/template/.scripts/secret-scan.py +82 -16
- package/templates/hermes-agent/template/SOUL.md.jinja +48 -12
- package/templates/hermes-agent/template/hermes.jinja +51 -10
- package/templates/hermes-agent/template/momo.jinja +177 -0
- package/templates/hermes-agent/template/role.yaml.jinja +31 -21
package/README.md
CHANGED
|
@@ -18,6 +18,77 @@ node dist/index.js --help
|
|
|
18
18
|
pjangler --help
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
+
## Orienting in a repo
|
|
22
|
+
|
|
23
|
+
`describe` reads a repo and reports what it actually is — detected type,
|
|
24
|
+
installed subsystems, config files present, and what to do next. It is the
|
|
25
|
+
first call for an agent (or a human) landing somewhere unfamiliar, and it works
|
|
26
|
+
in any repo, 33GOD or not.
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
pjangler describe # current directory
|
|
30
|
+
pjangler describe ../some-repo
|
|
31
|
+
pjangler describe --json # machine-parseable, for agent context
|
|
32
|
+
pjangler describe --interactive # tick off fixable findings, press A to apply
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Subsystem presence and subsystem correctness are reported separately: presence
|
|
36
|
+
comes from marker files on disk, parity from the recipe's own audit rules. A
|
|
37
|
+
subsystem that was never installed reads `absent`, not `broken`.
|
|
38
|
+
|
|
39
|
+
### Last activity, not lifecycle status
|
|
40
|
+
|
|
41
|
+
Projects report **when work last happened**, not a lifecycle word. The old
|
|
42
|
+
`status` field said `planned` for 22 of 27 registered projects — including ones
|
|
43
|
+
with commits the same day — so it never varied and never informed.
|
|
44
|
+
|
|
45
|
+
Activity is computed from git at read time, so it cannot go stale and no cron
|
|
46
|
+
has to walk the registry. It spans more than the checked-out branch:
|
|
47
|
+
|
|
48
|
+
| source | covers |
|
|
49
|
+
| --- | --- |
|
|
50
|
+
| refs | every local branch, remote-tracking branch, and tag |
|
|
51
|
+
| worktrees | every linked worktree's HEAD, including detached ones whose commits are on no ref |
|
|
52
|
+
| uncommitted | working-tree edits that are not committed yet |
|
|
53
|
+
|
|
54
|
+
The newest of those wins, and the winning source is always reported. Remote
|
|
55
|
+
state reflects your last fetch — nothing here touches the network.
|
|
56
|
+
|
|
57
|
+
`pjangler project list` orders by that signal, newest work first.
|
|
58
|
+
|
|
59
|
+
## Shell prompt
|
|
60
|
+
|
|
61
|
+
`pjangler-prompt` prints one compact line when the working directory is inside a
|
|
62
|
+
pjangler project, and nothing at all when it is not:
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
pjangler (PJAN) · 3m
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
It is a separate binary from the main CLI on purpose — the CLI loads the whole
|
|
69
|
+
parity rule set and takes ~52ms to boot, while this runs in ~30ms, well inside
|
|
70
|
+
starship's 500ms budget.
|
|
71
|
+
|
|
72
|
+
Add it to `~/.config/starship.toml` as a second, project-scoped prompt line:
|
|
73
|
+
|
|
74
|
+
```toml
|
|
75
|
+
format = "…$all${custom.pjangler}$line_break$character"
|
|
76
|
+
|
|
77
|
+
[custom.pjangler]
|
|
78
|
+
description = "pjangler project context"
|
|
79
|
+
when = true
|
|
80
|
+
shell = ["sh"]
|
|
81
|
+
symbol = "◆"
|
|
82
|
+
style = "bold purple"
|
|
83
|
+
# The newline lives INSIDE the conditional group, so nothing is emitted —
|
|
84
|
+
# not even a blank line — outside a pjangler project.
|
|
85
|
+
format = "(\n[$symbol $output]($style))"
|
|
86
|
+
command = 'exec pjangler-prompt 2>/dev/null'
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
`$line_break` must be named explicitly: it is otherwise absorbed by `$all` and
|
|
90
|
+
the extra line lands in the wrong place.
|
|
91
|
+
|
|
21
92
|
## MCP server usage
|
|
22
93
|
|
|
23
94
|
Run over stdio:
|
|
@@ -38,6 +109,7 @@ Exposed tools:
|
|
|
38
109
|
- `pjangler_project_init`
|
|
39
110
|
- `pjangler_project_list`
|
|
40
111
|
- `pjangler_project_show`
|
|
112
|
+
- `pjangler_describe_project`
|
|
41
113
|
- `pjangler_describe_recipe`
|
|
42
114
|
- `pjangler_run_recipe`
|
|
43
115
|
- `pjangler_deploy_hermes_agent`
|