@happycastle/oh-my-openclaw 0.12.2 → 0.12.3

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.
@@ -1,12 +1,15 @@
1
1
  import { getActivePersona, setActivePersona, resetPersonaState } from '../utils/persona-state.js';
2
2
  import { resolvePersonaId, listPersonas, DEFAULT_PERSONA_ID } from '../agents/persona-prompts.js';
3
+ import { resetPersonaInjectorState, resetPersonaContextEntries } from '../hooks/persona-injector.js';
3
4
  export function registerPersonaCommands(api) {
4
5
  api.registerCommand({
5
6
  name: 'omoc',
6
7
  description: 'OmOC mode — activate, switch, or list personas',
7
8
  acceptsArgs: true,
8
9
  handler: async (ctx) => {
10
+ api.logger.info(`[omoc] /omoc command received — raw ctx.args: ${JSON.stringify(ctx.args)}, ctx keys: ${JSON.stringify(Object.keys(ctx))}`);
9
11
  const args = (ctx.args ?? '').trim().toLowerCase();
12
+ api.logger.info(`[omoc] Parsed args: "${args}" (length: ${args.length})`);
10
13
  if (!args) {
11
14
  setActivePersona(DEFAULT_PERSONA_ID);
12
15
  const personas = listPersonas();
@@ -21,6 +24,7 @@ export function registerPersonaCommands(api) {
21
24
  if (args === 'off') {
22
25
  const wasActive = getActivePersona();
23
26
  resetPersonaState();
27
+ resetPersonaInjectorState();
24
28
  return {
25
29
  text: wasActive
26
30
  ? `# OmOC Mode: OFF\n\nPersona **${wasActive}** deactivated. Agent sessions will use default behavior.`
@@ -56,6 +60,7 @@ export function registerPersonaCommands(api) {
56
60
  text: `# Unknown Persona: "${args}"\n\nAvailable personas: ${available}\n\nUse \`/omoc list\` for details.`,
57
61
  };
58
62
  }
63
+ resetPersonaContextEntries();
59
64
  setActivePersona(resolvedId);
60
65
  const personas = listPersonas();
61
66
  const switched = personas.find((p) => p.id === resolvedId);
@@ -26,6 +26,11 @@ export function registerPersonaInjector(api) {
26
26
  const personaId = getActivePersona();
27
27
  const sessionKey = event.context.agentId || 'default';
28
28
  if (!personaId) {
29
+ if (lastInjectedPersonaId) {
30
+ contextCollector.unregister(sessionKey, `persona/${lastInjectedPersonaId}`);
31
+ lastInjectedPersonaId = null;
32
+ api.logger.info(`[omoc] Persona context cleared for ${sessionKey}`);
33
+ }
29
34
  return;
30
35
  }
31
36
  if (lastInjectedPersonaId === personaId) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@happycastle/oh-my-openclaw",
3
- "version": "0.12.2",
3
+ "version": "0.12.3",
4
4
  "description": "Oh-My-OpenClaw plugin — multi-agent orchestration, todo enforcer, ralph loop, and custom tools for OpenClaw",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",