@ghl-ai/aw 0.1.88 → 0.1.90

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/commands/push.mjs CHANGED
@@ -155,10 +155,12 @@ function normalizeRelPath(value) {
155
155
 
156
156
  // Root namespaces publish at the AW docs root (aw_docs/<ns>/...), mirroring the
157
157
  // local .aw_docs/<ns>/... subtree 1:1 — NO per-workspace <repo>/<user> segment
158
- // and full nested folders. Use for shared, repo-keyed doc trees such as PR
159
- // reviews (pr-reviews/<owner>/<repo>/pr-<n>/<run>) so they do not land under the
160
- // reviewer's workspace namespace as one mangled flat slug.
161
- const AW_DOCS_ROOT_NAMESPACES = ['pr-reviews', 'security-audits'];
158
+ // and full nested folders. Use for shared, resource-keyed doc trees such as PR
159
+ // reviews (pr-reviews/<owner>/<repo>/pr-<n>/<run>), security audits
160
+ // (security-audits/<repo>/<date>), support ticket investigations
161
+ // (support-tickets/<ticketId>), and infra incident RCAs (incidents/<fingerprint>)
162
+ // so they do not land under the runner's workspace namespace as one mangled flat slug.
163
+ const AW_DOCS_ROOT_NAMESPACES = ['pr-reviews', 'security-audits', 'support-tickets', 'incidents'];
162
164
 
163
165
  // Compound root prefixes (multi-segment). Longest match wins in matchRootPrefix().
164
166
  const AW_DOCS_ROOT_PREFIX_RULES = [
@@ -174,9 +176,13 @@ const AW_DOCS_ROOT_PREFIX_RULES = [
174
176
  // pr-reviews/<repo>/pr-<number>/<run> → 4 segments
175
177
  // security-audits/<repo>/<date> → 3 segments
176
178
  // security/audit/<repo>/<run-id> → 4 segments
179
+ // support-tickets/<ticketId> → 2 segments
180
+ // incidents/<fingerprint> → 2 segments
177
181
  const AW_DOCS_ROOT_MIN_SEGMENTS = {
178
182
  'pr-reviews': 4,
179
183
  'security-audits': 3,
184
+ 'support-tickets': 2,
185
+ 'incidents': 2,
180
186
  };
181
187
 
182
188
  function normalizeAwDocsRootInput(stripped) {
@@ -214,7 +220,8 @@ function awDocsRootScope(relPath) {
214
220
  if (!rule || segments.length < rule.minSegments) {
215
221
  throw new Error(
216
222
  'Root-scope docs publish must target pr-reviews/<repo>/pr-<number>/<run>, ' +
217
- 'security-audits/<repo>/<date>, or security/audit/<repo>/<run-id>, ' +
223
+ 'security-audits/<repo>/<date>, security/audit/<repo>/<run-id>, ' +
224
+ 'support-tickets/<ticketId>, or incidents/<fingerprint>, ' +
218
225
  `got "${relPath}".`
219
226
  );
220
227
  }
@@ -237,7 +244,7 @@ function featureScopeFromInput(input) {
237
244
 
238
245
  const match = value.match(/^(?:\.aw_docs\/)?features\/([^/]+)$/);
239
246
  if (!match) {
240
- throw new Error('Docs-only publish path must be .aw_docs/features/<feature-slug>, .aw_docs/pr-reviews/<...>, .aw_docs/security-audits/<...> (or legacy .aw_docs/security/audit/<...>), or use --feature <feature-slug>.');
247
+ throw new Error('Docs-only publish path must be .aw_docs/features/<feature-slug>, .aw_docs/pr-reviews/<...>, .aw_docs/security-audits/<...>, .aw_docs/support-tickets/<...>, .aw_docs/incidents/<...> (or legacy .aw_docs/security/audit/<...>), or use --feature <feature-slug>.');
241
248
  }
242
249
  return awDocsFeatureScope(match[1]);
243
250
  }
package/ecc.mjs CHANGED
@@ -12,7 +12,7 @@ import { applyStoredStartupPreferences } from "./startup.mjs";
12
12
 
13
13
  const AW_ECC_REPO_SSH = "git@github.com:shreyansh-ghl/aw-ecc.git";
14
14
  const AW_ECC_REPO_HTTPS = "https://github.com/shreyansh-ghl/aw-ecc.git";
15
- export const AW_ECC_TAG = "v1.4.74";
15
+ export const AW_ECC_TAG = "v1.4.76";
16
16
  const REQUIRED_ECC_FILES = [
17
17
  "package.json",
18
18
  "scripts/install-apply.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ghl-ai/aw",
3
- "version": "0.1.88",
3
+ "version": "0.1.90",
4
4
  "description": "Agentic Workspace CLI — pull, push & manage agents, skills and commands from the registry",
5
5
  "type": "module",
6
6
  "bin": {
package/startup.mjs CHANGED
@@ -25,6 +25,10 @@ const CLAUDE_DISABLE_DESCRIPTION = 'AW-managed override: disable automatic AW se
25
25
  const CLAUDE_ROUTER_DESCRIPTION = 'AW-managed: using-aw-skills session router';
26
26
  const CLAUDE_REMINDER_DESCRIPTION = 'AW-managed: using-aw-skills per-prompt reminder';
27
27
  const CLAUDE_LEGACY_REMINDER_SNIPPET = 'using-aw-skills is active. Select the smallest correct AW route';
28
+ // Stable marker present in every reminder-command form (plugin-root, project-dir, or ~/.claude
29
+ // path variants). Matching on it lets the cleaner recognize reminder entries that predate the
30
+ // `description` tag, so re-runs replace them instead of appending duplicates.
31
+ const CLAUDE_REMINDER_COMMAND_MARKER = 'session-start-rules-context.sh';
28
32
  const CLAUDE_ROUTER_COMMAND =
29
33
  'for f in "$HOME/.aw/.aw_registry/aw/skills/using-aw-skills/hooks/session-start.sh" "$HOME/.aw_registry/aw/skills/using-aw-skills/hooks/session-start.sh" "$HOME/.aw/.aw_registry/platform/core/skills/using-aw-skills/hooks/session-start.sh" "$HOME/.aw_registry/platform/core/skills/using-aw-skills/hooks/session-start.sh"; do [ -f "$f" ] && exec bash "$f"; done; exit 0';
30
34
  const CLAUDE_REMINDER_COMMAND =
@@ -216,7 +220,8 @@ function isManagedClaudeReminderEntry(entry) {
216
220
  && entry.hooks.some(hook =>
217
221
  hook?.type === 'command'
218
222
  && typeof hook?.command === 'string'
219
- && hook.command.includes(CLAUDE_LEGACY_REMINDER_SNIPPET)
223
+ && (hook.command.includes(CLAUDE_LEGACY_REMINDER_SNIPPET)
224
+ || hook.command.includes(CLAUDE_REMINDER_COMMAND_MARKER))
220
225
  );
221
226
  }
222
227