wingman-ai 1.0.0__tar.gz → 1.0.2__tar.gz

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 (62) hide show
  1. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/PKG-INFO +1 -1
  2. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/node_listener/package-lock.json +2 -2
  3. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/node_listener/package.json +4 -1
  4. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/pyproject.toml +1 -1
  5. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/cli/wizard.py +14 -9
  6. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/installer/node_installer.py +14 -17
  7. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/.gitignore +0 -0
  8. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/LICENSE +0 -0
  9. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/README.md +0 -0
  10. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/node_listener/.npmignore +0 -0
  11. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/node_listener/README.md +0 -0
  12. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/node_listener/src/index.ts +0 -0
  13. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/node_listener/src/ipc.ts +0 -0
  14. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/node_listener/src/messageHandler.ts +0 -0
  15. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/node_listener/src/socket.ts +0 -0
  16. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/node_listener/src/types.d.ts +0 -0
  17. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/node_listener/tsconfig.json +0 -0
  18. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/__init__.py +0 -0
  19. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/__main__.py +0 -0
  20. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/cli/__init__.py +0 -0
  21. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/cli/commands/__init__.py +0 -0
  22. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/cli/commands/auth.py +0 -0
  23. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/cli/commands/config.py +0 -0
  24. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/cli/commands/init.py +0 -0
  25. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/cli/commands/logs.py +0 -0
  26. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/cli/commands/start.py +0 -0
  27. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/cli/commands/status.py +0 -0
  28. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/cli/commands/stop.py +0 -0
  29. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/cli/commands/uninstall.py +0 -0
  30. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/cli/main.py +0 -0
  31. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/config/__init__.py +0 -0
  32. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/config/paths.py +0 -0
  33. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/config/personality.py +0 -0
  34. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/config/registry.py +0 -0
  35. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/config/settings.py +0 -0
  36. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/core/__init__.py +0 -0
  37. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/core/agent.py +0 -0
  38. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/core/ipc_handler.py +0 -0
  39. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/core/llm/__init__.py +0 -0
  40. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/core/llm/client.py +0 -0
  41. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/core/memory/__init__.py +0 -0
  42. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/core/memory/context.py +0 -0
  43. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/core/memory/models.py +0 -0
  44. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/core/message_processor.py +0 -0
  45. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/core/policy/__init__.py +0 -0
  46. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/core/policy/evaluator.py +0 -0
  47. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/core/process_manager.py +0 -0
  48. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/core/safety/__init__.py +0 -0
  49. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/core/safety/cooldown.py +0 -0
  50. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/core/safety/quiet_hours.py +0 -0
  51. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/core/safety/rate_limiter.py +0 -0
  52. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/core/safety/triggers.py +0 -0
  53. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/core/transports/__init__.py +0 -0
  54. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/core/transports/base.py +0 -0
  55. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/core/transports/imessage/__init__.py +0 -0
  56. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/core/transports/imessage/db_listener.py +0 -0
  57. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/core/transports/imessage/sender.py +0 -0
  58. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/core/transports/imessage/transport.py +0 -0
  59. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/core/transports/whatsapp.py +0 -0
  60. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/daemon/__init__.py +0 -0
  61. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/daemon/manager.py +0 -0
  62. {wingman_ai-1.0.0 → wingman_ai-1.0.2}/src/wingman/installer/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wingman-ai
3
- Version: 1.0.0
3
+ Version: 1.0.2
4
4
  Summary: An AI-powered personal chat agent for WhatsApp and iMessage with configurable personality and policy-driven responses
5
5
  Project-URL: Homepage, https://github.com/metanoia-oss/wingman
6
6
  Project-URL: Repository, https://github.com/metanoia-oss/wingman
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "wingman-ai",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "wingman-ai",
9
- "version": "1.0.0",
9
+ "version": "1.0.2",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
12
  "@whiskeysockets/baileys": "^6.7.16",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wingman-ai",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "WhatsApp listener component for Wingman AI - connects to WhatsApp Web using Baileys",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -46,5 +46,8 @@
46
46
  "devDependencies": {
47
47
  "@types/node": "^20.10.0",
48
48
  "typescript": "^5.3.2"
49
+ },
50
+ "publishConfig": {
51
+ "access": "public"
49
52
  }
50
53
  }
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "wingman-ai"
7
- version = "1.0.0"
7
+ version = "1.0.2"
8
8
  description = "An AI-powered personal chat agent for WhatsApp and iMessage with configurable personality and policy-driven responses"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -111,14 +111,15 @@ class SetupWizard:
111
111
  console=self.console,
112
112
  ) as progress:
113
113
  progress.add_task("Testing API key...", total=None)
114
+ test_result = self._test_api_key(api_key)
114
115
 
115
- if self._test_api_key(api_key):
116
- self.console.print(" [green]✓[/green] API key is valid")
117
- else:
118
- self.console.print(" [red]✗[/red] API key test failed")
119
- proceed = questionary.confirm("Continue anyway?", default=False).ask()
120
- if not proceed:
121
- return None
116
+ if test_result:
117
+ self.console.print(" [green]✓[/green] API key is valid")
118
+ else:
119
+ self.console.print(" [red]✗[/red] API key test failed")
120
+ proceed = questionary.confirm("Continue anyway?", default=False).ask()
121
+ if not proceed:
122
+ return None
122
123
 
123
124
  self.console.print()
124
125
  return api_key
@@ -129,8 +130,12 @@ class SetupWizard:
129
130
  from openai import OpenAI
130
131
 
131
132
  client = OpenAI(api_key=api_key)
132
- # Simple test - list models
133
- client.models.list()
133
+ # Use a minimal chat completion to verify the key works
134
+ client.chat.completions.create(
135
+ model="gpt-4o-mini",
136
+ messages=[{"role": "user", "content": "hi"}],
137
+ max_tokens=1,
138
+ )
134
139
  return True
135
140
  except Exception:
136
141
  return False
@@ -94,26 +94,23 @@ class NodeInstaller:
94
94
  """
95
95
  Find the bundled node_listener source.
96
96
 
97
- Checks:
98
- 1. Package data location (pip installed)
99
- 2. Development location (running from source)
97
+ Checks (in order):
98
+ 1. Wheel force-include location (site-packages/share/wingman/node_listener)
99
+ 2. System shared data locations
100
+ 3. Development location (running from source)
100
101
  """
101
- import importlib.resources
102
+ import sys
102
103
 
103
- # Try package data location first
104
- try:
105
- # Python 3.9+
106
- with importlib.resources.as_file(
107
- importlib.resources.files("wingman").joinpath("../../../node_listener")
108
- ) as path:
109
- if path.exists() and (path / "package.json").exists():
110
- return path
111
- except (TypeError, FileNotFoundError):
112
- pass
104
+ import wingman
113
105
 
114
- # Try shared data location (pip installed with pyproject.toml shared-data)
115
- import sys
106
+ # 1. Check within installed wheel (force-include puts files at
107
+ # site-packages/share/wingman/node_listener/)
108
+ site_packages = Path(wingman.__file__).parent.parent
109
+ wheel_path = site_packages / "share" / "wingman" / "node_listener"
110
+ if wheel_path.exists() and (wheel_path / "package.json").exists():
111
+ return wheel_path
116
112
 
113
+ # 2. Check system shared data locations
117
114
  for path in [
118
115
  Path(sys.prefix) / "share" / "wingman" / "node_listener",
119
116
  Path.home() / ".local" / "share" / "wingman" / "node_listener",
@@ -121,7 +118,7 @@ class NodeInstaller:
121
118
  if path.exists() and (path / "package.json").exists():
122
119
  return path
123
120
 
124
- # Try development location (relative to this file)
121
+ # 3. Development location (running from source)
125
122
  dev_path = Path(__file__).parent.parent.parent.parent.parent / "node_listener"
126
123
  if dev_path.exists() and (dev_path / "package.json").exists():
127
124
  return dev_path
File without changes
File without changes
File without changes