kimaki 0.0.3 → 0.1.2

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 (45) hide show
  1. package/README.md +7 -0
  2. package/bin.js +63 -1
  3. package/dist/ai-tool-to-genai.js +207 -0
  4. package/dist/ai-tool-to-genai.test.js +267 -0
  5. package/dist/cli.js +348 -0
  6. package/dist/directVoiceStreaming.js +102 -0
  7. package/dist/discordBot.js +1760 -0
  8. package/dist/genai-worker-wrapper.js +104 -0
  9. package/dist/genai-worker.js +293 -0
  10. package/dist/genai.js +224 -0
  11. package/dist/logger.js +10 -0
  12. package/dist/markdown.js +203 -0
  13. package/dist/markdown.test.js +232 -0
  14. package/dist/openai-realtime.js +228 -0
  15. package/dist/plugin.js +1414 -0
  16. package/dist/tools.js +353 -0
  17. package/dist/utils.js +52 -0
  18. package/dist/voice.js +28 -0
  19. package/dist/worker-types.js +1 -0
  20. package/dist/xml.js +89 -0
  21. package/dist/xml.test.js +32 -0
  22. package/package.json +37 -56
  23. package/src/ai-tool-to-genai.test.ts +296 -0
  24. package/src/ai-tool-to-genai.ts +251 -0
  25. package/src/cli.ts +539 -0
  26. package/src/discordBot.ts +2356 -0
  27. package/src/genai-worker-wrapper.ts +152 -0
  28. package/src/genai-worker.ts +361 -0
  29. package/src/genai.ts +308 -0
  30. package/src/logger.ts +16 -0
  31. package/src/markdown.test.ts +314 -0
  32. package/src/markdown.ts +229 -0
  33. package/src/openai-realtime.ts +363 -0
  34. package/src/tools.ts +422 -0
  35. package/src/utils.ts +73 -0
  36. package/src/voice.ts +42 -0
  37. package/src/worker-types.ts +60 -0
  38. package/src/xml.test.ts +37 -0
  39. package/src/xml.ts +117 -0
  40. package/dist/bin.d.ts +0 -3
  41. package/dist/bin.d.ts.map +0 -1
  42. package/dist/bin.js +0 -4
  43. package/dist/bin.js.map +0 -1
  44. package/dist/bundle.js +0 -3124
  45. package/dist/cli.d.ts.map +0 -1
package/src/xml.ts ADDED
@@ -0,0 +1,117 @@
1
+ import { DomHandler, Parser, ElementType } from 'htmlparser2'
2
+ import type { ChildNode, Element, Text } from 'domhandler'
3
+ import { createLogger } from './logger.js'
4
+
5
+ const xmlLogger = createLogger('XML')
6
+
7
+ export function extractTagsArrays<T extends string>({
8
+ xml,
9
+ tags,
10
+ }: {
11
+ xml: string
12
+ tags: T[]
13
+ }): Record<T, string[]> & { others: string[] } {
14
+ const result: Record<string, string[]> = {
15
+ others: [],
16
+ }
17
+
18
+ // Initialize arrays for each tag
19
+ tags.forEach((tag) => {
20
+ result[tag] = []
21
+ })
22
+
23
+ try {
24
+ const handler = new DomHandler(
25
+ (error, dom) => {
26
+ if (error) {
27
+ xmlLogger.error('Error parsing XML:', error)
28
+ } else {
29
+ const findTags = (nodes: ChildNode[], path: string[] = []) => {
30
+ nodes.forEach((node) => {
31
+ if (node.type === ElementType.Tag) {
32
+ const element = node as Element
33
+ const currentPath = [...path, element.name]
34
+ const pathString = currentPath.join('.')
35
+
36
+ // Extract content using original string positions
37
+ const extractContent = (): string => {
38
+ // Use element's own indices but exclude the tags
39
+ if (
40
+ element.startIndex !== null &&
41
+ element.endIndex !== null
42
+ ) {
43
+ // Extract the full element including tags
44
+ const fullElement = xml.substring(
45
+ element.startIndex,
46
+ element.endIndex + 1,
47
+ )
48
+ // Find where content starts (after opening tag)
49
+ const contentStart = fullElement.indexOf('>') + 1
50
+ // Find where content ends (before this element's closing tag)
51
+ const closingTag = `</${element.name}>`
52
+ const contentEnd = fullElement.lastIndexOf(closingTag)
53
+
54
+ if (contentStart > 0 && contentEnd > contentStart) {
55
+ return fullElement.substring(contentStart, contentEnd)
56
+ }
57
+
58
+ return ''
59
+ }
60
+ return ''
61
+ }
62
+
63
+ // Check both single tag names and nested paths
64
+ if (tags.includes(element.name as T)) {
65
+ const content = extractContent()
66
+ result[element.name as T]?.push(content)
67
+ }
68
+
69
+ // Check for nested path matches
70
+ if (tags.includes(pathString as T)) {
71
+ const content = extractContent()
72
+ result[pathString as T]?.push(content)
73
+ }
74
+
75
+ if (element.children) {
76
+ findTags(element.children, currentPath)
77
+ }
78
+ } else if (
79
+ node.type === ElementType.Text &&
80
+ node.parent?.type === ElementType.Root
81
+ ) {
82
+ const textNode = node as Text
83
+ if (textNode.data.trim()) {
84
+ // console.log('node.parent',node.parent)
85
+ result.others?.push(textNode.data.trim())
86
+ }
87
+ }
88
+ })
89
+ }
90
+
91
+ findTags(dom)
92
+ }
93
+ },
94
+ {
95
+ withStartIndices: true,
96
+ withEndIndices: true,
97
+ xmlMode: true,
98
+ },
99
+ )
100
+
101
+ const parser = new Parser(handler, {
102
+ xmlMode: true,
103
+ decodeEntities: false,
104
+ })
105
+ parser.write(xml)
106
+ parser.end()
107
+ } catch (error) {
108
+ xmlLogger.error('Unexpected error in extractTags:', error)
109
+ }
110
+
111
+ return result as Record<T, string[]> & { others: string[] }
112
+ }
113
+
114
+ export function extractNonXmlContent(xml: string): string {
115
+ const result = extractTagsArrays({ xml, tags: [] })
116
+ return result.others.join('\n')
117
+ }
package/dist/bin.d.ts DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=bin.d.ts.map
package/dist/bin.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":""}
package/dist/bin.js DELETED
@@ -1,4 +0,0 @@
1
- #!/usr/bin/env node
2
- import { cli } from './cli.js';
3
- cli.parse();
4
- //# sourceMappingURL=bin.js.map
package/dist/bin.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAE9B,GAAG,CAAC,KAAK,EAAE,CAAA"}