@etiquekit/etq 0.0.1 → 1.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.
Files changed (83) hide show
  1. package/AGENTS.md +28 -0
  2. package/QuickStart.md +86 -0
  3. package/README.md +77 -9
  4. package/bin/etiquette +1150 -0
  5. package/bin/etiquette-core +313 -0
  6. package/docs/ARCHITECTURE.md +100 -0
  7. package/docs/CODEX_CLIENT_COMPATIBILITY.md +83 -0
  8. package/docs/CONCEPTS.md +128 -0
  9. package/docs/CONCEPT_STATUS.md +67 -0
  10. package/docs/CORE_PROFILE.md +70 -0
  11. package/docs/LANE_PROVISIONING.md +157 -0
  12. package/docs/README.md +29 -0
  13. package/docs/RELEASE_SURFACE_AUDIT.md +156 -0
  14. package/docs/SEAT_DISCIPLINE.md +116 -0
  15. package/docs/SEAT_PROVISIONING.md +100 -0
  16. package/docs/TEAM_HANDOFF.md +190 -0
  17. package/docs/WORKTREE_QOL.md +92 -0
  18. package/docs/contracts/ledger-entry/README.md +83 -0
  19. package/docs/contracts/ledger-entry/ledger-entry.v0.1.md +116 -0
  20. package/docs/contracts/ledger-entry/ledger-entry.v0.2.md +90 -0
  21. package/docs/contracts/ledger-entry/ledger-entry.v0.md +123 -0
  22. package/docs/contracts/ledger-entry/ledger-query-cli.v0.1.md +64 -0
  23. package/package.json +42 -11
  24. package/scripts/install.sh +144 -0
  25. package/scripts/uninstall.sh +58 -0
  26. package/templates/etiquette-vanilla-v0/README.md +69 -0
  27. package/templates/etiquette-vanilla-v0/bin/stamp-vanilla +33 -0
  28. package/templates/etiquette-vanilla-v0/source/control-seat/.llm-substrate/HANDOFF.md +22 -0
  29. package/templates/etiquette-vanilla-v0/source/control-seat/README.md +16 -0
  30. package/templates/etiquette-vanilla-v0/source/control-seat/bin/_lib/http.sh +121 -0
  31. package/templates/etiquette-vanilla-v0/source/control-seat/bin/_lib/sanitize.sh +191 -0
  32. package/templates/etiquette-vanilla-v0/source/control-seat/bin/_lib/state.sh +67 -0
  33. package/templates/etiquette-vanilla-v0/source/control-seat/bin/access-assurance-check +55 -0
  34. package/templates/etiquette-vanilla-v0/source/control-seat/bin/compact-local-events +71 -0
  35. package/templates/etiquette-vanilla-v0/source/control-seat/bin/hooks/post-tool-use +64 -0
  36. package/templates/etiquette-vanilla-v0/source/control-seat/bin/hooks/session-end +64 -0
  37. package/templates/etiquette-vanilla-v0/source/control-seat/bin/hooks/session-start +64 -0
  38. package/templates/etiquette-vanilla-v0/source/control-seat/bin/hooks/stop +64 -0
  39. package/templates/etiquette-vanilla-v0/source/control-seat/bin/hooks/user-prompt-submit +64 -0
  40. package/templates/etiquette-vanilla-v0/source/control-seat/bin/local-event +53 -0
  41. package/templates/etiquette-vanilla-v0/source/control-seat/bin/post-receipt +143 -0
  42. package/templates/etiquette-vanilla-v0/source/control-seat/bin/post-telemetry +112 -0
  43. package/templates/etiquette-vanilla-v0/source/control-seat/bin/seat-consume-pass +115 -0
  44. package/templates/etiquette-vanilla-v0/source/control-seat/bin/seat-doctor +20 -0
  45. package/templates/etiquette-vanilla-v0/source/control-seat/bin/seat-init +86 -0
  46. package/templates/etiquette-vanilla-v0/source/control-seat/bin/seat-post-readiness +171 -0
  47. package/templates/etiquette-vanilla-v0/source/control-seat/bin/session-init +132 -0
  48. package/templates/etiquette-vanilla-v0/source/control-seat/docs/work/access/ACCESS-ASSURANCE.md +39 -0
  49. package/templates/etiquette-vanilla-v0/source/control-seat/docs/work/access/workspace-secure-profile.v0.json +53 -0
  50. package/templates/etiquette-vanilla-v0/source/control-seat/docs/work/ledger/LEDGER.md +7 -0
  51. package/templates/etiquette-vanilla-v0/source/control-seat/docs/work/playbacks/PLAYBACK_TEMPLATE.md +31 -0
  52. package/templates/etiquette-vanilla-v0/source/control-seat/docs/work/receipts/.gitkeep +1 -0
  53. package/templates/etiquette-vanilla-v0/source/control-seat/docs/work/tasks/CONTROL-001.yaml +13 -0
  54. package/templates/etiquette-vanilla-v0/source/etiquette-kernel/README.md +6 -0
  55. package/templates/etiquette-vanilla-v0/source/etiquette-kernel/bin/kernel-doctor +11 -0
  56. package/templates/etiquette-vanilla-v0/source/etiquette-kernel/contracts/playback.v0.md +37 -0
  57. package/templates/etiquette-vanilla-v0/source/etiquette-kernel/contracts/receipt.v0.md +25 -0
  58. package/templates/etiquette-vanilla-v0/source/etiquette-kernel/contracts/seat-readiness.v0.md +22 -0
  59. package/templates/etiquette-vanilla-v0/source/etiquette-kernel/contracts/task.v0.md +18 -0
  60. package/templates/etiquette-vanilla-v0/validate-vanilla.sh +43 -0
  61. package/templates/github-actions/README.md +30 -0
  62. package/templates/github-actions/w1-webhook-wake-canary.yml +111 -0
  63. package/templates/hosted-receiver/README.md +41 -0
  64. package/templates/hosted-receiver/w1-github-webhook-receiver.mjs +129 -0
  65. package/templates/seat-packs-v0/README.md +72 -0
  66. package/templates/seat-packs-v0/bin/provision-seat +70 -0
  67. package/templates/seat-packs-v0/source/claude-code-seat/.llm-substrate/HANDOFF.md +24 -0
  68. package/templates/seat-packs-v0/source/claude-code-seat/README.md +19 -0
  69. package/templates/seat-packs-v0/source/claude-code-seat/bin/seat-doctor +8 -0
  70. package/templates/seat-packs-v0/source/codex-seat/.llm-substrate/HANDOFF.md +25 -0
  71. package/templates/seat-packs-v0/source/codex-seat/README.md +22 -0
  72. package/templates/seat-packs-v0/source/codex-seat/bin/seat-doctor +8 -0
  73. package/templates/seat-packs-v0/source/gemini-seat/.llm-substrate/HANDOFF.md +23 -0
  74. package/templates/seat-packs-v0/source/gemini-seat/README.md +19 -0
  75. package/templates/seat-packs-v0/source/gemini-seat/bin/seat-doctor +8 -0
  76. package/templates/seat-packs-v0/source/ollama-seat/.llm-substrate/HANDOFF.md +24 -0
  77. package/templates/seat-packs-v0/source/ollama-seat/README.md +19 -0
  78. package/templates/seat-packs-v0/source/ollama-seat/bin/seat-doctor +8 -0
  79. package/templates/seat-packs-v0/source/openrouter-seat/.llm-substrate/HANDOFF.md +24 -0
  80. package/templates/seat-packs-v0/source/openrouter-seat/README.md +19 -0
  81. package/templates/seat-packs-v0/source/openrouter-seat/bin/seat-doctor +8 -0
  82. package/templates/seat-packs-v0/validate-seat-packs.sh +27 -0
  83. package/bin/etq +0 -4
@@ -0,0 +1,70 @@
1
+ #!/bin/sh
2
+ set -eu
3
+
4
+ ROOT=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
5
+
6
+ usage() {
7
+ echo "usage: sh bin/provision-seat <codex|claude-code|gemini|openrouter|ollama|auto> <target-dir>" >&2
8
+ }
9
+
10
+ if [ "$#" -ne 2 ]; then
11
+ usage
12
+ exit 2
13
+ fi
14
+
15
+ seat=$1
16
+ target=$2
17
+
18
+ detect() {
19
+ found=""
20
+ command -v codex >/dev/null 2>&1 && found="$found codex"
21
+ command -v claude >/dev/null 2>&1 && found="$found claude-code"
22
+ command -v gemini >/dev/null 2>&1 && found="$found gemini"
23
+ command -v ollama >/dev/null 2>&1 && found="$found ollama"
24
+ [ -n "${OPENROUTER_API_KEY:-}" ] && found="$found openrouter"
25
+
26
+ count=$(set -- $found; echo "$#")
27
+ if [ "$count" -eq 1 ]; then
28
+ set -- $found
29
+ echo "$1"
30
+ return
31
+ fi
32
+ if [ "$count" -eq 0 ]; then
33
+ echo "auto-detect found no supported runtime; choose explicit seat type" >&2
34
+ exit 2
35
+ fi
36
+ echo "auto-detect found multiple runtimes:$found; choose explicit seat type" >&2
37
+ exit 2
38
+ }
39
+
40
+ if [ "$seat" = "auto" ]; then
41
+ seat=$(detect)
42
+ fi
43
+
44
+ case "$seat" in
45
+ codex) src="$ROOT/source/codex-seat" ;;
46
+ claude-code) src="$ROOT/source/claude-code-seat" ;;
47
+ gemini) src="$ROOT/source/gemini-seat" ;;
48
+ openrouter) src="$ROOT/source/openrouter-seat" ;;
49
+ ollama) src="$ROOT/source/ollama-seat" ;;
50
+ *) usage; exit 2 ;;
51
+ esac
52
+
53
+ if [ -e "$target" ]; then
54
+ echo "target already exists: $target" >&2
55
+ exit 2
56
+ fi
57
+
58
+ cp -R "$src" "$target"
59
+
60
+ if command -v git >/dev/null 2>&1; then
61
+ git -C "$target" init -q
62
+ git -C "$target" add .
63
+ git -C "$target" \
64
+ -c user.name="Etiquette Seat" \
65
+ -c user.email="etiquette-seat@example.invalid" \
66
+ commit -q -m "Initial $seat seat scaffold"
67
+ fi
68
+
69
+ echo "provisioned $seat seat at $target"
70
+
@@ -0,0 +1,24 @@
1
+ # Claude Code Seat Handoff
2
+
3
+ You are an Etiquette Claude Code seat.
4
+
5
+ ## Startup
6
+
7
+ 1. Run `sh bin/seat-doctor`.
8
+ 2. Read the target project's head-start surfaces.
9
+ 3. Report readiness before claiming work.
10
+
11
+ ## Default Capability
12
+
13
+ ```yaml
14
+ seat_type: execution_seat | review_seat
15
+ execution_surface: claude_code
16
+ supported_strategies:
17
+ - solo
18
+ - local_adversarial_tango
19
+ - telescope
20
+ blocked_strategies:
21
+ - required_cross_runtime_without_backplane
22
+ ```
23
+
24
+ Do not clone product repos until assigned.
@@ -0,0 +1,19 @@
1
+ # Claude Code Seat
2
+
3
+ Optional Etiquette seat template for a Claude Code runtime.
4
+
5
+ Use this only after the control seat grants a Claude Code execution or review seat.
6
+
7
+ ## Head-Start
8
+
9
+ Before pickup in the target project, read:
10
+
11
+ 1. `AGENTS.md`
12
+ 2. `docs/work/BOARD.md`
13
+ 3. `docs/work/runbooks/SESSION_PICKUP.md`
14
+ 4. `docs/work/manuals/SEAT_OPERATING_MANUAL.md`
15
+ 5. `docs/work/cookbooks/ADD_A_LANE.md` when routing new work
16
+
17
+ Use `$etiquette-seat-lifecycle` before pickup after stale context, resume,
18
+ runner/model/profile swaps, or workflow migration. Hooks and readiness are
19
+ evidence only; the task envelope is the work authority.
@@ -0,0 +1,8 @@
1
+ #!/bin/sh
2
+ set -eu
3
+ ROOT=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
4
+ test -f "$ROOT/.llm-substrate/HANDOFF.md"
5
+ if [ "${ETIQUETTE_REQUIRE_RUNTIME:-0}" = "1" ]; then
6
+ command -v claude >/dev/null 2>&1
7
+ fi
8
+ echo "claude-code-seat: ok"
@@ -0,0 +1,25 @@
1
+ # Codex Seat Handoff
2
+
3
+ You are an Etiquette Codex seat.
4
+
5
+ ## Startup
6
+
7
+ 1. Run `sh bin/seat-doctor`.
8
+ 2. Use `etiquette notify poll --seat <id> --after-seq <n>` for cursor-based wake checks.
9
+ 3. Read the target project's head-start surfaces.
10
+ 4. Report readiness before claiming work.
11
+
12
+ ## Default Capability
13
+
14
+ ```yaml
15
+ seat_type: execution_seat | review_seat
16
+ execution_surface: codex
17
+ supported_strategies:
18
+ - solo
19
+ - telescope
20
+ - manifold
21
+ blocked_strategies:
22
+ - required_cross_runtime_without_backplane
23
+ ```
24
+
25
+ Do not clone product repos until assigned.
@@ -0,0 +1,22 @@
1
+ # Codex Seat
2
+
3
+ Optional Etiquette seat template for a Codex runtime.
4
+
5
+ Use this only after the control seat grants a Codex execution or review seat.
6
+
7
+ ## Head-Start
8
+
9
+ Before pickup in the target project, read:
10
+
11
+ 1. `AGENTS.md`
12
+ 2. `docs/work/BOARD.md`
13
+ 3. `docs/work/runbooks/SESSION_PICKUP.md`
14
+ 4. `docs/work/manuals/SEAT_OPERATING_MANUAL.md`
15
+ 5. `docs/work/cookbooks/ADD_A_LANE.md` when routing new work
16
+
17
+ Use `$etiquette-seat-lifecycle` before pickup after stale context, resume,
18
+ runner/model/profile swaps, or workflow migration. Hooks and readiness are
19
+ evidence only; the task envelope is the work authority.
20
+
21
+ For bounded, cursor-based wake checks use the portable core command
22
+ `etiquette notify poll --seat <id> --after-seq <n>` instead of raw `tail -F` monitors.
@@ -0,0 +1,8 @@
1
+ #!/bin/sh
2
+ set -eu
3
+ ROOT=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
4
+ test -f "$ROOT/.llm-substrate/HANDOFF.md"
5
+ if [ "${ETIQUETTE_REQUIRE_RUNTIME:-0}" = "1" ]; then
6
+ command -v codex >/dev/null 2>&1
7
+ fi
8
+ echo "codex-seat: ok"
@@ -0,0 +1,23 @@
1
+ # Gemini Seat Handoff
2
+
3
+ You are an Etiquette Gemini seat.
4
+
5
+ ## Startup
6
+
7
+ 1. Run `sh bin/seat-doctor`.
8
+ 2. Read the target project's head-start surfaces.
9
+ 3. Report readiness before claiming work.
10
+
11
+ ## Default Capability
12
+
13
+ ```yaml
14
+ seat_type: execution_seat | review_seat
15
+ execution_surface: gemini_cli
16
+ supported_strategies:
17
+ - solo
18
+ - telescope
19
+ blocked_strategies:
20
+ - required_parallel_without_adapter
21
+ ```
22
+
23
+ Do not clone product repos until assigned.
@@ -0,0 +1,19 @@
1
+ # Gemini Seat
2
+
3
+ Optional Etiquette seat template for a Gemini CLI runtime.
4
+
5
+ Use this only after the control seat grants a Gemini execution or review seat.
6
+
7
+ ## Head-Start
8
+
9
+ Before pickup in the target project, read:
10
+
11
+ 1. `AGENTS.md`
12
+ 2. `docs/work/BOARD.md`
13
+ 3. `docs/work/runbooks/SESSION_PICKUP.md`
14
+ 4. `docs/work/manuals/SEAT_OPERATING_MANUAL.md`
15
+ 5. `docs/work/cookbooks/ADD_A_LANE.md` when routing new work
16
+
17
+ Use `$etiquette-seat-lifecycle` before pickup after stale context, resume,
18
+ runner/model/profile swaps, or workflow migration. Hooks and readiness are
19
+ evidence only; the task envelope is the work authority.
@@ -0,0 +1,8 @@
1
+ #!/bin/sh
2
+ set -eu
3
+ ROOT=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
4
+ test -f "$ROOT/.llm-substrate/HANDOFF.md"
5
+ if [ "${ETIQUETTE_REQUIRE_RUNTIME:-0}" = "1" ]; then
6
+ command -v gemini >/dev/null 2>&1
7
+ fi
8
+ echo "gemini-seat: ok"
@@ -0,0 +1,24 @@
1
+ # Ollama Seat Handoff
2
+
3
+ You are an Etiquette Ollama seat.
4
+
5
+ ## Startup
6
+
7
+ 1. Run `sh bin/seat-doctor`.
8
+ 2. Read the target project's head-start surfaces.
9
+ 3. Report readiness before claiming work.
10
+
11
+ ## Default Capability
12
+
13
+ ```yaml
14
+ seat_type: execution_seat | review_seat
15
+ execution_surface: ollama
16
+ supported_strategies:
17
+ - solo
18
+ - telescope
19
+ blocked_strategies:
20
+ - required_remote_api_without_adapter
21
+ - required_parallel_without_adapter
22
+ ```
23
+
24
+ Do not clone product repos until assigned.
@@ -0,0 +1,19 @@
1
+ # Ollama Seat
2
+
3
+ Optional Etiquette seat template for a local Ollama runtime.
4
+
5
+ Use this only after the control seat grants an Ollama execution or review seat.
6
+
7
+ ## Head-Start
8
+
9
+ Before pickup in the target project, read:
10
+
11
+ 1. `AGENTS.md`
12
+ 2. `docs/work/BOARD.md`
13
+ 3. `docs/work/runbooks/SESSION_PICKUP.md`
14
+ 4. `docs/work/manuals/SEAT_OPERATING_MANUAL.md`
15
+ 5. `docs/work/cookbooks/ADD_A_LANE.md` when routing new work
16
+
17
+ Use `$etiquette-seat-lifecycle` before pickup after stale context, resume,
18
+ runner/model/profile swaps, or workflow migration. Hooks and readiness are
19
+ evidence only; the task envelope is the work authority.
@@ -0,0 +1,8 @@
1
+ #!/bin/sh
2
+ set -eu
3
+ ROOT=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
4
+ test -f "$ROOT/.llm-substrate/HANDOFF.md"
5
+ if [ "${ETIQUETTE_REQUIRE_RUNTIME:-0}" = "1" ]; then
6
+ command -v ollama >/dev/null 2>&1
7
+ fi
8
+ echo "ollama-seat: ok"
@@ -0,0 +1,24 @@
1
+ # OpenRouter Seat Handoff
2
+
3
+ You are an Etiquette OpenRouter seat.
4
+
5
+ ## Startup
6
+
7
+ 1. Run `sh bin/seat-doctor`.
8
+ 2. Read the target project's head-start surfaces.
9
+ 3. Report readiness before claiming work.
10
+
11
+ ## Default Capability
12
+
13
+ ```yaml
14
+ seat_type: execution_seat | review_seat
15
+ execution_surface: openrouter
16
+ supported_strategies:
17
+ - solo
18
+ - telescope
19
+ blocked_strategies:
20
+ - required_local_tool_execution_without_adapter
21
+ - required_parallel_without_adapter
22
+ ```
23
+
24
+ Do not clone product repos until assigned. Do not embed API keys in receipts.
@@ -0,0 +1,19 @@
1
+ # OpenRouter Seat
2
+
3
+ Optional Etiquette seat template for an OpenRouter-backed runtime.
4
+
5
+ Use this only after the control seat grants an OpenRouter execution or review seat.
6
+
7
+ ## Head-Start
8
+
9
+ Before pickup in the target project, read:
10
+
11
+ 1. `AGENTS.md`
12
+ 2. `docs/work/BOARD.md`
13
+ 3. `docs/work/runbooks/SESSION_PICKUP.md`
14
+ 4. `docs/work/manuals/SEAT_OPERATING_MANUAL.md`
15
+ 5. `docs/work/cookbooks/ADD_A_LANE.md` when routing new work
16
+
17
+ Use `$etiquette-seat-lifecycle` before pickup after stale context, resume,
18
+ runner/model/profile swaps, or workflow migration. Hooks and readiness are
19
+ evidence only; the task envelope is the work authority.
@@ -0,0 +1,8 @@
1
+ #!/bin/sh
2
+ set -eu
3
+ ROOT=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
4
+ test -f "$ROOT/.llm-substrate/HANDOFF.md"
5
+ if [ "${ETIQUETTE_REQUIRE_RUNTIME:-0}" = "1" ]; then
6
+ test -n "${OPENROUTER_API_KEY:-}"
7
+ fi
8
+ echo "openrouter-seat: ok"
@@ -0,0 +1,27 @@
1
+ #!/bin/sh
2
+ set -eu
3
+
4
+ ROOT=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
5
+
6
+ for seat in codex-seat claude-code-seat gemini-seat openrouter-seat ollama-seat; do
7
+ test -d "$ROOT/source/$seat"
8
+ sh "$ROOT/source/$seat/bin/seat-doctor"
9
+ done
10
+
11
+ tmp="${TMPDIR:-/tmp}/etiquette-seat-pack-provision-check-$$"
12
+ sh "$ROOT/bin/provision-seat" codex "$tmp"
13
+ sh "$tmp/bin/seat-doctor"
14
+
15
+ fakebin="${TMPDIR:-/tmp}/etiquette-seat-pack-auto-bin-$$"
16
+ autotmp="${TMPDIR:-/tmp}/etiquette-seat-pack-auto-check-$$"
17
+ mkdir -p "$fakebin"
18
+ if [ -x /usr/bin/true ]; then
19
+ true_cmd=/usr/bin/true
20
+ else
21
+ true_cmd=/bin/true
22
+ fi
23
+ ln -s "$true_cmd" "$fakebin/codex"
24
+ PATH="$fakebin:/bin:/usr/bin" sh "$ROOT/bin/provision-seat" auto "$autotmp"
25
+ sh "$autotmp/bin/seat-doctor"
26
+
27
+ echo "seat-packs: ok"
package/bin/etq DELETED
@@ -1,4 +0,0 @@
1
- #!/usr/bin/env node
2
- console.log("Etiquette (etq) — local-first governance for agent-assisted engineering.");
3
- console.log("This name is reserved; releases begin at https://etiquekit.com");
4
- process.exit(0);