@aiscene/shared 8.0.3 → 8.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 (99) hide show
  1. package/dist/es/agent-tools/agent-behavior-init-args.mjs +44 -0
  2. package/dist/es/agent-tools/base-tools.mjs +163 -0
  3. package/dist/es/agent-tools/chrome-path.mjs +50 -0
  4. package/dist/es/agent-tools/cli-report-session.mjs +78 -0
  5. package/dist/es/agent-tools/error-formatter.mjs +106 -0
  6. package/dist/es/agent-tools/index.mjs +9 -0
  7. package/dist/es/agent-tools/init-arg-utils.mjs +38 -0
  8. package/dist/es/agent-tools/observation-artifact.mjs +5 -0
  9. package/dist/es/agent-tools/observation-record.mjs +248 -0
  10. package/dist/es/agent-tools/tool-defaults.mjs +54 -0
  11. package/dist/es/agent-tools/tool-generator.mjs +529 -0
  12. package/dist/es/agent-tools/types.mjs +3 -0
  13. package/dist/es/agent-tools/user-prompt.mjs +66 -0
  14. package/dist/es/cli/interrupt.mjs +116 -0
  15. package/dist/es/cli/record-command.mjs +130 -0
  16. package/dist/es/cli/screenshot-file.mjs +24 -0
  17. package/dist/es/cli/verbose-ai-act.mjs +230 -0
  18. package/dist/es/cli/verbose-screenshot.mjs +134 -0
  19. package/dist/es/cli/verbose.mjs +404 -0
  20. package/dist/es/env/parse-model-config.mjs +1 -1
  21. package/dist/es/env/types.mjs +3 -1
  22. package/dist/es/img/info.mjs +45 -1
  23. package/dist/es/img/photon-loader.mjs +4 -0
  24. package/dist/es/recorder.mjs +249 -0
  25. package/dist/lib/agent-tools/agent-behavior-init-args.js +87 -0
  26. package/dist/lib/agent-tools/base-tools.js +197 -0
  27. package/dist/lib/agent-tools/chrome-path.js +87 -0
  28. package/dist/lib/agent-tools/cli-report-session.js +121 -0
  29. package/dist/lib/agent-tools/error-formatter.js +149 -0
  30. package/dist/lib/agent-tools/index.js +114 -0
  31. package/dist/lib/agent-tools/init-arg-utils.js +78 -0
  32. package/dist/lib/agent-tools/observation-artifact.js +42 -0
  33. package/dist/lib/agent-tools/observation-record.js +297 -0
  34. package/dist/lib/agent-tools/tool-defaults.js +97 -0
  35. package/dist/lib/agent-tools/tool-generator.js +569 -0
  36. package/dist/lib/agent-tools/types.js +40 -0
  37. package/dist/lib/agent-tools/user-prompt.js +103 -0
  38. package/dist/lib/cli/interrupt.js +156 -0
  39. package/dist/lib/cli/record-command.js +164 -0
  40. package/dist/lib/cli/screenshot-file.js +58 -0
  41. package/dist/lib/cli/verbose-ai-act.js +273 -0
  42. package/dist/lib/cli/verbose-screenshot.js +177 -0
  43. package/dist/lib/cli/verbose.js +465 -0
  44. package/dist/lib/env/parse-model-config.js +1 -1
  45. package/dist/lib/env/types.js +5 -0
  46. package/dist/lib/img/info.js +48 -1
  47. package/dist/lib/img/photon-loader.js +38 -0
  48. package/dist/lib/recorder.js +307 -0
  49. package/dist/types/agent-tools/agent-behavior-init-args.d.ts +17 -0
  50. package/dist/types/agent-tools/base-tools.d.ts +158 -0
  51. package/dist/types/agent-tools/chrome-path.d.ts +2 -0
  52. package/dist/types/agent-tools/cli-report-session.d.ts +12 -0
  53. package/dist/types/agent-tools/error-formatter.d.ts +30 -0
  54. package/dist/types/agent-tools/index.d.ts +9 -0
  55. package/dist/types/agent-tools/init-arg-utils.d.ts +13 -0
  56. package/dist/types/agent-tools/observation-artifact.d.ts +10 -0
  57. package/dist/types/agent-tools/observation-record.d.ts +38 -0
  58. package/dist/types/agent-tools/tool-defaults.d.ts +63 -0
  59. package/dist/types/agent-tools/tool-generator.d.ts +13 -0
  60. package/dist/types/agent-tools/types.d.ts +213 -0
  61. package/dist/types/agent-tools/user-prompt.d.ts +13 -0
  62. package/dist/types/cli/interrupt.d.ts +49 -0
  63. package/dist/types/cli/record-command.d.ts +3 -0
  64. package/dist/types/cli/screenshot-file.d.ts +10 -0
  65. package/dist/types/cli/verbose-ai-act.d.ts +44 -0
  66. package/dist/types/cli/verbose-screenshot.d.ts +10 -0
  67. package/dist/types/cli/verbose.d.ts +40 -0
  68. package/dist/types/env/types.d.ts +4 -3
  69. package/dist/types/img/info.d.ts +2 -0
  70. package/dist/types/img/photon-loader.d.ts +2 -0
  71. package/dist/types/mcp/types.d.ts +1 -0
  72. package/dist/types/recorder.d.ts +113 -0
  73. package/package.json +1 -1
  74. package/src/agent-tools/agent-behavior-init-args.ts +109 -0
  75. package/src/agent-tools/base-tools.ts +399 -0
  76. package/src/agent-tools/chrome-path.ts +74 -0
  77. package/src/agent-tools/cli-report-session.ts +130 -0
  78. package/src/agent-tools/error-formatter.ts +177 -0
  79. package/src/agent-tools/index.ts +9 -0
  80. package/src/agent-tools/init-arg-utils.ts +105 -0
  81. package/src/agent-tools/observation-artifact.ts +29 -0
  82. package/src/agent-tools/observation-record.ts +331 -0
  83. package/src/agent-tools/tool-defaults.ts +119 -0
  84. package/src/agent-tools/tool-generator.ts +866 -0
  85. package/src/agent-tools/types.ts +250 -0
  86. package/src/agent-tools/user-prompt.ts +102 -0
  87. package/src/cli/interrupt.ts +207 -0
  88. package/src/cli/record-command.ts +177 -0
  89. package/src/cli/screenshot-file.ts +61 -0
  90. package/src/cli/verbose-ai-act.ts +387 -0
  91. package/src/cli/verbose-screenshot.ts +269 -0
  92. package/src/cli/verbose.ts +753 -0
  93. package/src/env/types.ts +2 -0
  94. package/src/img/index.ts +12 -0
  95. package/src/img/info.ts +61 -0
  96. package/src/img/photon-loader.ts +5 -0
  97. package/src/img/transform.ts +261 -2
  98. package/src/mcp/types.ts +2 -0
  99. package/src/recorder.ts +625 -0
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Unified, declarative mechanism for "force a default option on every tool
3
+ * call" behaviors exposed by device and Agent Skill CLIs.
4
+ *
5
+ * Adding a new behavior flag (e.g. `--deep-search`) is a one-line change to
6
+ * {@link TOOL_BEHAVIOR_FLAGS}: declare which default-option "bag" it fills.
7
+ * The tool generator, tools managers and CLI parsing are all generic
8
+ * over {@link ToolDefaults} and never need to learn about individual flags.
9
+ *
10
+ * See https://github.com/web-infra-dev/midscene/issues/2446.
11
+ */
12
+
13
+ /**
14
+ * Default options injected into generated tool calls. Each field is an
15
+ * injection point; an explicit per-call value always wins over these defaults.
16
+ */
17
+ export interface ToolDefaults {
18
+ /**
19
+ * Merged into every locate field of action tools (`Tap`, `Input`, ...).
20
+ * e.g. `{ deepLocate: true }`.
21
+ */
22
+ locate?: Record<string, unknown>;
23
+ /**
24
+ * Merged into the `aiAction` options used by the `act` tool.
25
+ * e.g. `{ deepLocate: true, deepThink: true }`.
26
+ */
27
+ act?: Record<string, unknown>;
28
+ }
29
+
30
+ export interface ToolBehaviorFlag {
31
+ /** Kebab-case CLI flag name, e.g. `deep-locate` (exposed as `--deep-locate`). */
32
+ cli: string;
33
+ /** One-line description for help output. */
34
+ description: string;
35
+ /** Default-option bags this flag turns on when present. */
36
+ defaults: ToolDefaults;
37
+ }
38
+
39
+ /**
40
+ * The single source of truth for behavior flags. Add a row to support a new
41
+ * `--flag`; nothing else in the pipeline needs to change.
42
+ */
43
+ export const TOOL_BEHAVIOR_FLAGS: readonly ToolBehaviorFlag[] = [
44
+ {
45
+ cli: 'deep-locate',
46
+ description:
47
+ 'Force deep locate for every locating operation (better precision for small/ambiguous targets, a bit slower).',
48
+ defaults: { locate: { deepLocate: true }, act: { deepLocate: true } },
49
+ },
50
+ {
51
+ cli: 'deep-think',
52
+ description:
53
+ 'Plan the act tool with deep thinking (richer context and sub-goal decomposition, a bit slower).',
54
+ defaults: { act: { deepThink: true } },
55
+ },
56
+ ];
57
+
58
+ /** Merge two {@link ToolDefaults}, with `b` taking precedence over `a`. */
59
+ export function mergeToolDefaults(
60
+ a: ToolDefaults,
61
+ b: ToolDefaults,
62
+ ): ToolDefaults {
63
+ const locate = { ...a.locate, ...b.locate };
64
+ const act = { ...a.act, ...b.act };
65
+ const result: ToolDefaults = {};
66
+ if (Object.keys(locate).length > 0) {
67
+ result.locate = locate;
68
+ }
69
+ if (Object.keys(act).length > 0) {
70
+ result.act = act;
71
+ }
72
+ return result;
73
+ }
74
+
75
+ /**
76
+ * Resolve the active {@link ToolDefaults} from a predicate that says whether a
77
+ * given flag (by its `cli` name) is enabled.
78
+ */
79
+ export function resolveToolDefaults(
80
+ isEnabled: (cli: string) => boolean,
81
+ ): ToolDefaults {
82
+ return TOOL_BEHAVIOR_FLAGS.reduce<ToolDefaults>(
83
+ (acc, flag) =>
84
+ isEnabled(flag.cli) ? mergeToolDefaults(acc, flag.defaults) : acc,
85
+ {},
86
+ );
87
+ }
88
+
89
+ /**
90
+ * Split argv into the resolved {@link ToolDefaults} and the remaining args.
91
+ *
92
+ * Behavior flags (e.g. `--deep-locate`) are global: they may appear anywhere
93
+ * in argv and are not tied to a specific sub-command. They are recognized by
94
+ * exact kebab-case match and removed so a strict per-command parser never sees them. Every other
95
+ * token is returned untouched and in order for that per-command parser.
96
+ *
97
+ * This is the single place that knows how a behavior flag looks on the command
98
+ * line; the device / Agent Skill CLI resolves defaults from
99
+ * {@link TOOL_BEHAVIOR_FLAGS} through here / {@link resolveToolDefaults}.
100
+ */
101
+ export function stripBehaviorFlags(argv: readonly string[]): {
102
+ rawArgs: string[];
103
+ toolDefaults: ToolDefaults;
104
+ } {
105
+ const enabled = new Set<string>();
106
+ const rawArgs: string[] = [];
107
+ for (const arg of argv) {
108
+ const flag = TOOL_BEHAVIOR_FLAGS.find((f) => arg === `--${f.cli}`);
109
+ if (flag) {
110
+ enabled.add(flag.cli);
111
+ } else {
112
+ rawArgs.push(arg);
113
+ }
114
+ }
115
+ return {
116
+ rawArgs,
117
+ toolDefaults: resolveToolDefaults((cli) => enabled.has(cli)),
118
+ };
119
+ }