agent-knowledge-cli 0.1.2__py3-none-any.whl

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 (88) hide show
  1. agent_knowledge/__init__.py +3 -0
  2. agent_knowledge/__main__.py +3 -0
  3. agent_knowledge/assets/__init__.py +0 -0
  4. agent_knowledge/assets/claude/global.md +44 -0
  5. agent_knowledge/assets/claude/project-template.md +46 -0
  6. agent_knowledge/assets/claude/scripts/install.sh +85 -0
  7. agent_knowledge/assets/commands/doctor.md +21 -0
  8. agent_knowledge/assets/commands/global-knowledge-sync.md +27 -0
  9. agent_knowledge/assets/commands/graphify-sync.md +26 -0
  10. agent_knowledge/assets/commands/knowledge-sync.md +26 -0
  11. agent_knowledge/assets/commands/ship.md +29 -0
  12. agent_knowledge/assets/rules/generate-architecture-doc.mdc +87 -0
  13. agent_knowledge/assets/rules/history-backfill.mdc +67 -0
  14. agent_knowledge/assets/rules/memory-bootstrap.mdc +53 -0
  15. agent_knowledge/assets/rules/memory-writeback.mdc +90 -0
  16. agent_knowledge/assets/rules/shared-memory.mdc +102 -0
  17. agent_knowledge/assets/rules/workflow-orchestration.mdc +93 -0
  18. agent_knowledge/assets/rules-global/action-first.mdc +26 -0
  19. agent_knowledge/assets/rules-global/no-icons-emojis.mdc +16 -0
  20. agent_knowledge/assets/rules-global/no-unsolicited-docs.mdc +20 -0
  21. agent_knowledge/assets/scripts/bootstrap-memory-tree.sh +389 -0
  22. agent_knowledge/assets/scripts/compact-memory.sh +191 -0
  23. agent_knowledge/assets/scripts/doctor.sh +137 -0
  24. agent_knowledge/assets/scripts/global-knowledge-sync.sh +372 -0
  25. agent_knowledge/assets/scripts/graphify-sync.sh +397 -0
  26. agent_knowledge/assets/scripts/import-agent-history.sh +706 -0
  27. agent_knowledge/assets/scripts/install-project-links.sh +258 -0
  28. agent_knowledge/assets/scripts/lib/knowledge-common.sh +875 -0
  29. agent_knowledge/assets/scripts/measure-token-savings.py +540 -0
  30. agent_knowledge/assets/scripts/ship.sh +256 -0
  31. agent_knowledge/assets/scripts/update-knowledge.sh +341 -0
  32. agent_knowledge/assets/scripts/validate-knowledge.sh +265 -0
  33. agent_knowledge/assets/skills/decision-recording/SKILL.md +124 -0
  34. agent_knowledge/assets/skills/history-backfill/SKILL.md +115 -0
  35. agent_knowledge/assets/skills/memory-compaction/SKILL.md +115 -0
  36. agent_knowledge/assets/skills/memory-management/SKILL.md +134 -0
  37. agent_knowledge/assets/skills/project-ontology-bootstrap/SKILL.md +173 -0
  38. agent_knowledge/assets/skills/session-management/SKILL.md +116 -0
  39. agent_knowledge/assets/skills-cursor/create-rule/SKILL.md +164 -0
  40. agent_knowledge/assets/skills-cursor/create-skill/SKILL.md +498 -0
  41. agent_knowledge/assets/skills-cursor/create-subagent/SKILL.md +225 -0
  42. agent_knowledge/assets/skills-cursor/migrate-to-skills/SKILL.md +134 -0
  43. agent_knowledge/assets/skills-cursor/shell/SKILL.md +24 -0
  44. agent_knowledge/assets/skills-cursor/update-cursor-settings/SKILL.md +122 -0
  45. agent_knowledge/assets/templates/dashboards/project-overview.template.md +24 -0
  46. agent_knowledge/assets/templates/dashboards/session-rollup.template.md +23 -0
  47. agent_knowledge/assets/templates/hooks/hooks.json.template +11 -0
  48. agent_knowledge/assets/templates/integrations/claude/CLAUDE.md +7 -0
  49. agent_knowledge/assets/templates/integrations/codex/AGENTS.md +7 -0
  50. agent_knowledge/assets/templates/integrations/cursor/agent-knowledge.mdc +11 -0
  51. agent_knowledge/assets/templates/integrations/cursor/hooks.json +11 -0
  52. agent_knowledge/assets/templates/memory/MEMORY.root.template.md +36 -0
  53. agent_knowledge/assets/templates/memory/branch.template.md +33 -0
  54. agent_knowledge/assets/templates/memory/decision.template.md +33 -0
  55. agent_knowledge/assets/templates/memory/profile.hybrid.yaml +16 -0
  56. agent_knowledge/assets/templates/memory/profile.ml-platform.yaml +18 -0
  57. agent_knowledge/assets/templates/memory/profile.robotics.yaml +19 -0
  58. agent_knowledge/assets/templates/memory/profile.web-app.yaml +16 -0
  59. agent_knowledge/assets/templates/portfolio/.obsidian/README.md +21 -0
  60. agent_knowledge/assets/templates/portfolio/.obsidian/app.json +5 -0
  61. agent_knowledge/assets/templates/portfolio/.obsidian/core-plugins.json +7 -0
  62. agent_knowledge/assets/templates/project/.agent-project.yaml +36 -0
  63. agent_knowledge/assets/templates/project/.agentknowledgeignore +10 -0
  64. agent_knowledge/assets/templates/project/AGENTS.md +87 -0
  65. agent_knowledge/assets/templates/project/agent-knowledge/.obsidian/README.md +23 -0
  66. agent_knowledge/assets/templates/project/agent-knowledge/.obsidian/app.json +5 -0
  67. agent_knowledge/assets/templates/project/agent-knowledge/.obsidian/core-plugins.json +7 -0
  68. agent_knowledge/assets/templates/project/agent-knowledge/Evidence/README.md +34 -0
  69. agent_knowledge/assets/templates/project/agent-knowledge/Evidence/imports/README.md +29 -0
  70. agent_knowledge/assets/templates/project/agent-knowledge/Evidence/raw/README.md +25 -0
  71. agent_knowledge/assets/templates/project/agent-knowledge/Memory/MEMORY.md +37 -0
  72. agent_knowledge/assets/templates/project/agent-knowledge/Memory/decisions/decisions.md +31 -0
  73. agent_knowledge/assets/templates/project/agent-knowledge/Outputs/README.md +24 -0
  74. agent_knowledge/assets/templates/project/agent-knowledge/STATUS.md +43 -0
  75. agent_knowledge/assets/templates/project/agent-knowledge/Sessions/README.md +21 -0
  76. agent_knowledge/assets/templates/project/agent-knowledge/Templates/README.md +19 -0
  77. agent_knowledge/assets/templates/project/gitignore.agent-knowledge +13 -0
  78. agent_knowledge/cli.py +457 -0
  79. agent_knowledge/runtime/__init__.py +0 -0
  80. agent_knowledge/runtime/integrations.py +154 -0
  81. agent_knowledge/runtime/paths.py +46 -0
  82. agent_knowledge/runtime/shell.py +22 -0
  83. agent_knowledge/runtime/sync.py +255 -0
  84. agent_knowledge_cli-0.1.2.dist-info/METADATA +155 -0
  85. agent_knowledge_cli-0.1.2.dist-info/RECORD +88 -0
  86. agent_knowledge_cli-0.1.2.dist-info/WHEEL +4 -0
  87. agent_knowledge_cli-0.1.2.dist-info/entry_points.txt +2 -0
  88. agent_knowledge_cli-0.1.2.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,258 @@
1
+ #!/bin/bash
2
+ #
3
+ # Connect a project repo to a dedicated knowledge folder through ./agent-knowledge.
4
+ #
5
+ # Supported forms:
6
+ # ./install-project-links.sh --slug <slug> --repo <repo-path>
7
+ # ./install-project-links.sh --slug <slug> --repo <repo-path> --real-path <knowledge-path>
8
+ # ./install-project-links.sh <repo-path> <knowledge-path> # legacy form
9
+ # ./install-project-links.sh <slug> <repo-path> # slug + repo form
10
+ #
11
+
12
+ set -euo pipefail
13
+
14
+ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
15
+ AGENTS_RULES_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
16
+ PROJECT_TEMPLATE_DIR="$AGENTS_RULES_DIR/templates/project"
17
+ HOOK_TEMPLATE="$AGENTS_RULES_DIR/templates/hooks/hooks.json.template"
18
+
19
+ # shellcheck source=/dev/null
20
+ . "$SCRIPT_DIR/lib/knowledge-common.sh"
21
+
22
+ usage() {
23
+ cat <<'EOF'
24
+ Usage:
25
+ scripts/install-project-links.sh --slug <slug> --repo <repo-path> [--knowledge-home <dir>] [--real-path <dir>] [--install-hooks] [--dry-run] [--json] [--summary-file <file>]
26
+
27
+ Notes:
28
+ - The source of truth lives in the dedicated external knowledge folder.
29
+ - The project repo exposes ./agent-knowledge as a local pointer to that folder.
30
+ - Existing valid setup is left alone unless --force is provided.
31
+ EOF
32
+ }
33
+
34
+ PROJECT_SLUG_ARG=""
35
+ REPO_PATH=""
36
+ KNOWLEDGE_HOME="$HOME/agent-os/projects"
37
+ REAL_PATH_ARG=""
38
+ INSTALL_HOOKS=0
39
+ POSITIONAL=()
40
+ WARNINGS=()
41
+ CHANGES=()
42
+
43
+ while [ "$#" -gt 0 ]; do
44
+ if kc_parse_common_flag "$@" ; then
45
+ shift
46
+ continue
47
+ fi
48
+ flag_status=$?
49
+ if [ "$flag_status" -eq 2 ]; then
50
+ shift 2
51
+ continue
52
+ fi
53
+
54
+ case "$1" in
55
+ --slug)
56
+ PROJECT_SLUG_ARG="${2:-}"
57
+ shift 2
58
+ ;;
59
+ --repo)
60
+ REPO_PATH="${2:-}"
61
+ shift 2
62
+ ;;
63
+ --knowledge-home)
64
+ KNOWLEDGE_HOME="${2:-}"
65
+ shift 2
66
+ ;;
67
+ --real-path)
68
+ REAL_PATH_ARG="${2:-}"
69
+ shift 2
70
+ ;;
71
+ --install-hooks)
72
+ INSTALL_HOOKS=1
73
+ shift
74
+ ;;
75
+ *)
76
+ POSITIONAL+=("$1")
77
+ shift
78
+ ;;
79
+ esac
80
+ done
81
+
82
+ if [ "$SHOW_HELP" -eq 1 ]; then
83
+ usage
84
+ exit 0
85
+ fi
86
+
87
+ if [ -z "$REPO_PATH" ] && [ ${#POSITIONAL[@]} -eq 2 ]; then
88
+ if [ -d "${POSITIONAL[0]}" ]; then
89
+ REPO_PATH="${POSITIONAL[0]}"
90
+ REAL_PATH_ARG="${POSITIONAL[1]}"
91
+ PROJECT_SLUG_ARG="$(kc_slugify "$(basename "$REPO_PATH")")"
92
+ else
93
+ PROJECT_SLUG_ARG="${POSITIONAL[0]}"
94
+ REPO_PATH="${POSITIONAL[1]}"
95
+ fi
96
+ fi
97
+
98
+ [ -n "$REPO_PATH" ] || kc_fail "Missing repo path. See --help."
99
+ REPO_PATH="$(cd "$REPO_PATH" 2>/dev/null && pwd)"
100
+ [ -n "$REPO_PATH" ] || kc_fail "Unable to resolve repo path: $REPO_PATH"
101
+
102
+ if [ -z "$PROJECT_SLUG_ARG" ]; then
103
+ PROJECT_SLUG_ARG="$(kc_slugify "$(basename "$REPO_PATH")")"
104
+ fi
105
+
106
+ if [ -z "$REAL_PATH_ARG" ]; then
107
+ REAL_PATH_ARG="$KNOWLEDGE_HOME/$PROJECT_SLUG_ARG"
108
+ fi
109
+ REAL_PATH_ARG="$(kc_resolve_relative "$PWD" "$REAL_PATH_ARG")"
110
+
111
+ load_existing_state() {
112
+ kc_load_project_context "$REPO_PATH"
113
+ }
114
+
115
+ load_existing_state
116
+
117
+ TARGET_PROJECT="$REPO_PATH"
118
+ PROJECT_NAME="$(basename "$TARGET_PROJECT")"
119
+ PROJECT_SLUG="$PROJECT_SLUG_ARG"
120
+ KNOWLEDGE_REAL_DIR="$REAL_PATH_ARG"
121
+ KNOWLEDGE_POINTER_PATH="$TARGET_PROJECT/agent-knowledge"
122
+ POINTER_DISPLAY="./agent-knowledge"
123
+ AGENT_PROJECT_FILE="$TARGET_PROJECT/.agent-project.yaml"
124
+ AGENTS_FILE="$TARGET_PROJECT/AGENTS.md"
125
+ IGNORE_FILE="$TARGET_PROJECT/.agentknowledgeignore"
126
+ CURSOR_DIR="$TARGET_PROJECT/.cursor"
127
+ CURSOR_HOOKS_FILE="$CURSOR_DIR/hooks.json"
128
+
129
+ kc_log "Connecting project: $TARGET_PROJECT"
130
+ kc_log " slug: $PROJECT_SLUG"
131
+ kc_log " real knowledge path: $KNOWLEDGE_REAL_DIR"
132
+
133
+ symlink_caveat="$(kc_detect_symlink_caveat)"
134
+ if [ -n "$symlink_caveat" ]; then
135
+ WARNINGS+=("$symlink_caveat")
136
+ kc_log " caveat: $symlink_caveat"
137
+ fi
138
+
139
+ kc_ensure_dir "$KNOWLEDGE_REAL_DIR" "${KNOWLEDGE_REAL_DIR#$HOME/}"
140
+ case "$KC_LAST_ACTION" in
141
+ created|would-create)
142
+ CHANGES+=("knowledge-dir")
143
+ ;;
144
+ esac
145
+ if [ -d "$KNOWLEDGE_REAL_DIR" ]; then
146
+ KNOWLEDGE_REAL_DIR="$(cd "$KNOWLEDGE_REAL_DIR" 2>/dev/null && pwd -P)"
147
+ fi
148
+
149
+ kc_ensure_symlink "$KNOWLEDGE_REAL_DIR" "$KNOWLEDGE_POINTER_PATH" "agent-knowledge"
150
+ case "$KC_LAST_ACTION" in
151
+ created|updated|would-create|would-update)
152
+ CHANGES+=("pointer")
153
+ ;;
154
+ esac
155
+
156
+ if [ ! -f "$AGENT_PROJECT_FILE" ] || [ "$FORCE" -eq 1 ]; then
157
+ kc_replace_in_template \
158
+ "$PROJECT_TEMPLATE_DIR/.agent-project.yaml" \
159
+ "$AGENT_PROJECT_FILE" \
160
+ ".agent-project.yaml" \
161
+ "<project-name>" "$PROJECT_NAME" \
162
+ "<project-slug>" "$PROJECT_SLUG" \
163
+ "<absolute-path-to-dedicated-knowledge-folder>" "$KNOWLEDGE_REAL_DIR"
164
+ case "$KC_LAST_ACTION" in
165
+ created|updated|would-create|would-update)
166
+ CHANGES+=(".agent-project.yaml")
167
+ ;;
168
+ esac
169
+ else
170
+ kc_log " exists: .agent-project.yaml (left unchanged)"
171
+ fi
172
+
173
+ if [ ! -f "$AGENTS_FILE" ] || [ "$FORCE" -eq 1 ]; then
174
+ kc_copy_file "$PROJECT_TEMPLATE_DIR/AGENTS.md" "$AGENTS_FILE" "AGENTS.md"
175
+ case "$KC_LAST_ACTION" in
176
+ created|updated|would-create|would-update)
177
+ CHANGES+=("AGENTS.md")
178
+ ;;
179
+ esac
180
+ else
181
+ kc_log " exists: AGENTS.md (left unchanged)"
182
+ fi
183
+
184
+ if [ ! -f "$TARGET_PROJECT/.gitignore" ]; then
185
+ kc_copy_file "$PROJECT_TEMPLATE_DIR/gitignore.agent-knowledge" "$TARGET_PROJECT/.gitignore" ".gitignore"
186
+ case "$KC_LAST_ACTION" in
187
+ created|updated|would-create|would-update)
188
+ CHANGES+=(".gitignore")
189
+ ;;
190
+ esac
191
+ else
192
+ kc_log " note: existing .gitignore left unchanged"
193
+ fi
194
+
195
+ if [ ! -f "$IGNORE_FILE" ] || [ "$FORCE" -eq 1 ]; then
196
+ kc_copy_file "$PROJECT_TEMPLATE_DIR/.agentknowledgeignore" "$IGNORE_FILE" ".agentknowledgeignore"
197
+ case "$KC_LAST_ACTION" in
198
+ created|updated|would-create|would-update)
199
+ CHANGES+=(".agentknowledgeignore")
200
+ ;;
201
+ esac
202
+ else
203
+ kc_log " exists: .agentknowledgeignore (left unchanged)"
204
+ fi
205
+
206
+ if [ "$INSTALL_HOOKS" -eq 1 ]; then
207
+ kc_ensure_dir "$CURSOR_DIR" ".cursor/"
208
+ if [ ! -f "$CURSOR_HOOKS_FILE" ] || [ "$FORCE" -eq 1 ]; then
209
+ kc_replace_in_template \
210
+ "$HOOK_TEMPLATE" \
211
+ "$CURSOR_HOOKS_FILE" \
212
+ ".cursor/hooks.json" \
213
+ "<repo-path>" "$TARGET_PROJECT"
214
+ case "$KC_LAST_ACTION" in
215
+ created|updated|would-create|would-update)
216
+ CHANGES+=(".cursor/hooks.json")
217
+ ;;
218
+ esac
219
+ else
220
+ kc_log " exists: .cursor/hooks.json (left unchanged)"
221
+ fi
222
+ fi
223
+
224
+ if [ ! -f "$KNOWLEDGE_REAL_DIR/Memory/MEMORY.md" ] || [ ! -f "$KNOWLEDGE_REAL_DIR/STATUS.md" ] || [ "$FORCE" -eq 1 ]; then
225
+ bootstrap_cmd="$SCRIPT_DIR/bootstrap-memory-tree.sh"
226
+ bootstrap_args=(--project "$TARGET_PROJECT")
227
+ if [ "$DRY_RUN" -eq 1 ]; then
228
+ bootstrap_args+=(--dry-run)
229
+ fi
230
+ if [ -n "$SUMMARY_FILE" ]; then
231
+ :
232
+ fi
233
+ kc_run_child_script "$bootstrap_cmd" "${bootstrap_args[@]}"
234
+ CHANGES+=("bootstrap")
235
+ fi
236
+
237
+ json_summary="{"
238
+ json_summary="$json_summary\"script\":\"install-project-links\","
239
+ json_summary="$json_summary\"repo_root\":\"$(kc_json_escape "$TARGET_PROJECT")\","
240
+ json_summary="$json_summary\"project_slug\":\"$(kc_json_escape "$PROJECT_SLUG")\","
241
+ json_summary="$json_summary\"real_knowledge_path\":\"$(kc_json_escape "$KNOWLEDGE_REAL_DIR")\","
242
+ json_summary="$json_summary\"pointer_path\":\"$(kc_json_escape "$KNOWLEDGE_POINTER_PATH")\","
243
+ json_summary="$json_summary\"dry_run\":$(kc_json_bool "$DRY_RUN"),"
244
+ json_summary="$json_summary\"install_hooks\":$(kc_json_bool "$INSTALL_HOOKS"),"
245
+ json_summary="$json_summary\"changes\":$(kc_json_array "${CHANGES[@]+"${CHANGES[@]}"}"),"
246
+ json_summary="$json_summary\"warnings\":$(kc_json_array "${WARNINGS[@]+"${WARNINGS[@]}"}")"
247
+ json_summary="$json_summary}"
248
+ kc_write_json_output "$json_summary"
249
+
250
+ if [ "$JSON_MODE" -ne 1 ]; then
251
+ kc_log ""
252
+ kc_log "Next steps:"
253
+ kc_log " 1. agent-knowledge doctor --project $TARGET_PROJECT"
254
+ kc_log " 2. Review $AGENT_PROJECT_FILE"
255
+ if [ "$INSTALL_HOOKS" -eq 1 ]; then
256
+ kc_log " 3. Review $CURSOR_HOOKS_FILE before enabling editor hooks"
257
+ fi
258
+ fi